渗透实训 | 记一次后台多处对文件上传的WAF绕过
字数 1879 2025-08-19 12:42:09

文件上传WAF绕过技术实战教学文档

0x01 前言

本教学文档基于一次真实的后台文件上传WAF绕过实战经验,详细讲解文件上传漏洞的发现、利用及WAF绕过技术。文档内容仅供安全研究与教学使用,请勿用于非法用途。

0x02 后台发现与初步测试

2.1 后台登录

  • 使用常见弱口令组合进行测试(如admin/admin888)
  • 成功登录后开始寻找文件上传功能点

2.2 文件上传接口发现

  • 通过浏览后台功能,寻找文件上传接口
  • 前端通常会对上传文件类型进行限制(如只允许特定后缀)
  • 需要绕过前端限制进行真实测试

0x03 文件上传基础绕过

3.1 基本绕过方法

  1. 修改Content-Type:将application/octet-stream改为image/jpeg等图片类型
  2. 修改文件扩展名:如将.php改为.php.jpg.phtml
  3. 大小写变换:如.PhP.pHp
  4. 添加特殊字符:如.php%00.jpg.php.(利用截断)

3.2 无回显文件上传处理

  • 使用目录爆破工具(如dirsearch)配合自定义字典寻找上传目录
  • 常见上传目录:/upload/images/app/uploadfile
  • 可能需要测试多级目录(如/app/uploads/2024/

0x04 WAF绕过技术详解

4.1 WAF拦截类型判断

  1. 文件名拦截:修改文件名即可绕过
  2. 文件内容拦截:检测文件中的恶意代码

判断方法

  • 上传无害内容(如简单文本)测试是否成功
  • 逐步添加可疑内容,定位拦截点

4.2 文件名拦截绕过技术

  1. 大小写变换Web.ShellWEB.sHell
  2. 添加符号web;shell.phpweb'shell.php
  3. 变换boundary头部:修改multipart请求中的boundary值
  4. 颠倒顺序lphp.(某些解析漏洞可利用)
  5. 符号截断shell.php%00.jpgshell.php\x00.jpg
  6. 重复文件名shell.xls.xls.xls.php
  7. 包含关键词:如系统要求文件名包含xls,可使用shell.xls.php

4.3 文件内容拦截绕过技术

  1. 数据重复:重复部分内容混淆检测
  2. 数据溢出:添加大量垃圾数据使WAF检测超时
  3. 添加垃圾数据
    • multipart/form-databoundary之间插入随机字符串
    • 示例:
      Content-Type: multipart/form-data; bf8658dafbf0fd31ead48dcc0b9f2312...[大量随机字符]...boundary=55107301338934892091876051441
      
  4. 编码混淆:使用十六进制、base64等编码方式
  5. 注释混淆:在代码中添加大量无用注释

4.4 IIS特定解析漏洞

  • 某些IIS版本存在特殊解析规则,如:
    • shell.php.xxx可能被解析为PHP文件
    • shell.asashell.cer等特殊扩展名可能被解析执行
  • 需要针对目标服务器环境进行测试

0x05 实战步骤总结

  1. 发现上传点:通过后台功能或目录扫描发现上传接口
  2. 绕过前端限制:修改请求包绕过JS验证
  3. 判断WAF类型
    • 上传无害文件测试
    • 逐步添加可疑内容定位拦截点
  4. 针对性绕过
    • 如果是文件名拦截,使用大小写、特殊字符等技术
    • 如果是内容拦截,使用垃圾数据、数据重复等技术
  5. 寻找上传文件
    • 使用目录爆破工具
    • 尝试常见上传路径
    • 可能需要多级目录测试
  6. 验证利用
    • 访问上传的文件验证是否可执行
    • 根据响应调整绕过技术

0x06 防御建议

  1. 文件上传安全措施

    • 使用白名单验证文件扩展名
    • 重命名上传文件(如使用随机文件名)
    • 限制文件上传目录的执行权限
    • 对上传内容进行严格检测
  2. WAF配置建议

    • 更新规则库以检测新型绕过技术
    • 设置合理的请求大小限制
    • 对异常请求(如超长boundary)进行拦截
  3. 服务器配置

    • 禁用危险扩展名的解析
    • 定期更新服务器软件修补解析漏洞
    • 设置严格的目录权限

0x07 工具与资源

  1. 目录爆破工具

    • dirsearch
    • DirBuster
    • 自定义字典(积累常见上传路径)
  2. WAF识别工具

    • WAFW00F
    • 手动检测(观察拦截页面特征)
  3. 文件上传测试工具

    • Burp Suite(手动测试)
    • Upload Bypass工具(自动化测试)

0x08 总结

文件上传WAF绕过是一个持续对抗的过程,需要:

  1. 充分理解WAF的工作原理和检测机制
  2. 掌握多种绕过技术并根据实际情况灵活组合
  3. 积累丰富的实战经验和测试字典
  4. 关注最新的漏洞和绕过技术发展

安全研究人员应不断更新知识库,而防御方也应持续加强防护措施,形成良性的安全生态。

文件上传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 之间插入随机字符串 示例: 编码混淆 :使用十六进制、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的工作原理和检测机制 掌握多种绕过技术并根据实际情况灵活组合 积累丰富的实战经验和测试字典 关注最新的漏洞和绕过技术发展 安全研究人员应不断更新知识库,而防御方也应持续加强防护措施,形成良性的安全生态。