某Shop供应商后台本地文件包含导致权限提升
字数 1193 2025-08-26 22:11:28

TPshop供应商后台本地文件包含漏洞分析与利用

0x01 漏洞概述

TPshop(Thinkphp shop)是由深圳搜豹网络有限公司开发的一套多商家模式的商城系统。该系统存在一个本地文件包含漏洞,攻击者可以利用该漏洞读取服务器上的任意文件,并在特定条件下实现远程代码执行,从而提升权限。

0x02 受影响版本

所有使用受影响代码的TPshop版本

0x03 漏洞原理分析

漏洞位置

漏洞位于/Application/supplier/Controller/Order.php文件中的delivery_printorder_print方法。

关键代码分析

  1. delivery_print方法:
531 Line: 从外部获取参数为template的值,默认值为print并赋给$template
532 Line: 调用基类中的fetch方法,并将$template传入,$template为模板文件
  1. order_print方法:
512 Line: 从外部获取参数为template的值,默认值为picing并赋给$template
513 Line: 调用基类中的fetch方法,并将$template传入,$template为模板文件

漏洞成因

  • 模板参数template完全由用户控制
  • 系统没有对输入进行有效过滤和验证
  • template参数带有后缀时,程序不会自动添加路径和后缀,导致可以直接包含任意文件
  • 系统没有append方法,只有delivery_print方法可以触发漏洞

0x04 漏洞验证与利用

漏洞探测

  1. 基本探测:
http://target.com/supplier/order/delivery_print?template=1

观察系统是否自动添加路径和后缀

  1. 带后缀探测:
http://target.com/supplier/order/delivery_print?template=1.php

观察系统是否直接使用提供的文件名

  1. 文件读取测试(读取robots.txt):
http://target.com/supplier/order/delivery_print?template=robots.txt

完整利用步骤

  1. 上传恶意文件

    • 访问用户个人资料修改页面:
    http://target.com/Home/User/info.html
    
    • 上传一张包含恶意代码的图片(确保文件名不包含特殊字符)
  2. 触发文件包含

    • 构造URL包含上传的图片文件:
    http://target.com/supplier/order/delivery_print?template=public/upload/user/[用户ID]/head_pic/[图片文件名].png&w=phpinfo();
    
    • 其中w参数用于传递PHP代码
  3. 验证代码执行

    • 观察返回内容是否包含phpinfo()的输出

0x05 漏洞修复建议

  1. 输入验证

    • template参数进行严格过滤,限制只能包含字母、数字和下划线
    • 禁止路径穿越字符(如../
  2. 文件包含限制

    • 限制包含的文件必须在特定目录下
    • 强制添加模板文件后缀(如.html
  3. 权限控制

    • 确保供应商后台有严格的权限控制
    • 限制可包含的文件类型
  4. 代码修改

    • 在调用fetch方法前,对template参数进行白名单验证
    • 添加文件存在性检查

0x06 漏洞影响

  • 任意文件读取:攻击者可以读取服务器上的敏感文件(如配置文件、数据库凭证等)
  • 远程代码执行:通过包含上传的恶意文件,攻击者可以在服务器上执行任意代码
  • 权限提升:供应商账户可以利用此漏洞获取更高权限

0x07 防御措施

  1. 及时更新到官方最新版本
  2. 对上传文件进行严格的内容检查,而不仅仅是扩展名检查
  3. 实施最小权限原则,限制供应商后台的权限
  4. 在生产环境中禁用错误报告,避免泄露路径信息

0x08 总结

TPshop的本地文件包含漏洞源于对用户输入的不当处理,通过精心构造的请求,攻击者可以利用该漏洞实现从文件读取到代码执行的全过程。开发人员应始终遵循"不信任用户输入"的原则,对所有用户提供的参数进行严格验证和过滤。

TPshop供应商后台本地文件包含漏洞分析与利用 0x01 漏洞概述 TPshop(Thinkphp shop)是由深圳搜豹网络有限公司开发的一套多商家模式的商城系统。该系统存在一个本地文件包含漏洞,攻击者可以利用该漏洞读取服务器上的任意文件,并在特定条件下实现远程代码执行,从而提升权限。 0x02 受影响版本 所有使用受影响代码的TPshop版本 0x03 漏洞原理分析 漏洞位置 漏洞位于 /Application/supplier/Controller/Order.php 文件中的 delivery_print 和 order_print 方法。 关键代码分析 delivery_ print方法 : order_ print方法 : 漏洞成因 模板参数 template 完全由用户控制 系统没有对输入进行有效过滤和验证 当 template 参数带有后缀时,程序不会自动添加路径和后缀,导致可以直接包含任意文件 系统没有 append 方法,只有 delivery_print 方法可以触发漏洞 0x04 漏洞验证与利用 漏洞探测 基本探测: 观察系统是否自动添加路径和后缀 带后缀探测: 观察系统是否直接使用提供的文件名 文件读取测试(读取robots.txt): 完整利用步骤 上传恶意文件 : 访问用户个人资料修改页面: 上传一张包含恶意代码的图片(确保文件名不包含特殊字符) 触发文件包含 : 构造URL包含上传的图片文件: 其中 w 参数用于传递PHP代码 验证代码执行 : 观察返回内容是否包含 phpinfo() 的输出 0x05 漏洞修复建议 输入验证 : 对 template 参数进行严格过滤,限制只能包含字母、数字和下划线 禁止路径穿越字符(如 ../ ) 文件包含限制 : 限制包含的文件必须在特定目录下 强制添加模板文件后缀(如 .html ) 权限控制 : 确保供应商后台有严格的权限控制 限制可包含的文件类型 代码修改 : 在调用 fetch 方法前,对 template 参数进行白名单验证 添加文件存在性检查 0x06 漏洞影响 任意文件读取:攻击者可以读取服务器上的敏感文件(如配置文件、数据库凭证等) 远程代码执行:通过包含上传的恶意文件,攻击者可以在服务器上执行任意代码 权限提升:供应商账户可以利用此漏洞获取更高权限 0x07 防御措施 及时更新到官方最新版本 对上传文件进行严格的内容检查,而不仅仅是扩展名检查 实施最小权限原则,限制供应商后台的权限 在生产环境中禁用错误报告,避免泄露路径信息 0x08 总结 TPshop的本地文件包含漏洞源于对用户输入的不当处理,通过精心构造的请求,攻击者可以利用该漏洞实现从文件读取到代码执行的全过程。开发人员应始终遵循"不信任用户输入"的原则,对所有用户提供的参数进行严格验证和过滤。