渗透实训 | 记一次后台多处对文件上传的WAF绕过
字数 1879 2025-08-19 12:42:09
文件上传WAF绕过技术实战教学文档
0x01 前言
本教学文档基于一次真实的后台文件上传WAF绕过实战经验,详细讲解文件上传漏洞的发现、利用及WAF绕过技术。文档内容仅供安全研究与教学使用,请勿用于非法用途。
0x02 后台发现与初步测试
2.1 后台登录
- 使用常见弱口令组合进行测试(如admin/admin888)
- 成功登录后开始寻找文件上传功能点
2.2 文件上传接口发现
- 通过浏览后台功能,寻找文件上传接口
- 前端通常会对上传文件类型进行限制(如只允许特定后缀)
- 需要绕过前端限制进行真实测试
0x03 文件上传基础绕过
3.1 基本绕过方法
- 修改Content-Type:将
application/octet-stream改为image/jpeg等图片类型 - 修改文件扩展名:如将
.php改为.php.jpg或.phtml - 大小写变换:如
.PhP、.pHp等 - 添加特殊字符:如
.php%00.jpg、.php.(利用截断)
3.2 无回显文件上传处理
- 使用目录爆破工具(如dirsearch)配合自定义字典寻找上传目录
- 常见上传目录:
/upload、/images、/app、/uploadfile等 - 可能需要测试多级目录(如
/app/uploads/2024/)
0x04 WAF绕过技术详解
4.1 WAF拦截类型判断
- 文件名拦截:修改文件名即可绕过
- 文件内容拦截:检测文件中的恶意代码
判断方法:
- 上传无害内容(如简单文本)测试是否成功
- 逐步添加可疑内容,定位拦截点
4.2 文件名拦截绕过技术
- 大小写变换:
Web.Shell、WEB.sHell - 添加符号:
web;shell.php、web'shell.php - 变换boundary头部:修改multipart请求中的boundary值
- 颠倒顺序:
lphp.(某些解析漏洞可利用) - 符号截断:
shell.php%00.jpg、shell.php\x00.jpg - 重复文件名:
shell.xls.xls.xls.php - 包含关键词:如系统要求文件名包含
xls,可使用shell.xls.php
4.3 文件内容拦截绕过技术
- 数据重复:重复部分内容混淆检测
- 数据溢出:添加大量垃圾数据使WAF检测超时
- 添加垃圾数据:
- 在
multipart/form-data与boundary之间插入随机字符串 - 示例:
Content-Type: multipart/form-data; bf8658dafbf0fd31ead48dcc0b9f2312...[大量随机字符]...boundary=55107301338934892091876051441
- 在
- 编码混淆:使用十六进制、base64等编码方式
- 注释混淆:在代码中添加大量无用注释
4.4 IIS特定解析漏洞
- 某些IIS版本存在特殊解析规则,如:
shell.php.xxx可能被解析为PHP文件shell.asa、shell.cer等特殊扩展名可能被解析执行
- 需要针对目标服务器环境进行测试
0x05 实战步骤总结
- 发现上传点:通过后台功能或目录扫描发现上传接口
- 绕过前端限制:修改请求包绕过JS验证
- 判断WAF类型:
- 上传无害文件测试
- 逐步添加可疑内容定位拦截点
- 针对性绕过:
- 如果是文件名拦截,使用大小写、特殊字符等技术
- 如果是内容拦截,使用垃圾数据、数据重复等技术
- 寻找上传文件:
- 使用目录爆破工具
- 尝试常见上传路径
- 可能需要多级目录测试
- 验证利用:
- 访问上传的文件验证是否可执行
- 根据响应调整绕过技术
0x06 防御建议
-
文件上传安全措施:
- 使用白名单验证文件扩展名
- 重命名上传文件(如使用随机文件名)
- 限制文件上传目录的执行权限
- 对上传内容进行严格检测
-
WAF配置建议:
- 更新规则库以检测新型绕过技术
- 设置合理的请求大小限制
- 对异常请求(如超长boundary)进行拦截
-
服务器配置:
- 禁用危险扩展名的解析
- 定期更新服务器软件修补解析漏洞
- 设置严格的目录权限
0x07 工具与资源
-
目录爆破工具:
- dirsearch
- DirBuster
- 自定义字典(积累常见上传路径)
-
WAF识别工具:
- WAFW00F
- 手动检测(观察拦截页面特征)
-
文件上传测试工具:
- Burp Suite(手动测试)
- Upload Bypass工具(自动化测试)
0x08 总结
文件上传WAF绕过是一个持续对抗的过程,需要:
- 充分理解WAF的工作原理和检测机制
- 掌握多种绕过技术并根据实际情况灵活组合
- 积累丰富的实战经验和测试字典
- 关注最新的漏洞和绕过技术发展
安全研究人员应不断更新知识库,而防御方也应持续加强防护措施,形成良性的安全生态。