文件上传绕过思路总结
字数 1454 2025-08-24 23:51:25

文件上传绕过技术全面指南

1. 文件上传绕过基础思路

文件上传绕过主要分为两种思路:

1.1 硬怼方法

  • 直接针对WAF的检测规则进行突破
  • 适用于对WAF规则有一定了解的情况

1.2 迂回打击

  • 利用系统特性或中间件漏洞绕过
  • 寻找真实IP绕过云WAF等间接方法

2. 硬怼方法详解

2.1 后缀名Fuzz

  • 测试各种可能的后缀名变体
  • 包括中间件配置文件后缀
  • 寻找WAF规则中可能遗漏的后缀

2.2 HTTP头变量改造

  • Content-Type修改

    • 删除Content-Type
    • 修改为其他类型(application/text, image/jpeg等)
    • 添加charset参数(ibm869, iso-8859-13等)
    • 大小写变换
    • 重复传入
    • 回车换行污染
  • Content-Disposition改造

    • 溢出绕过(添加大量字符)
    • 回车换行
    • 双写绕过
    • 参数污染
  • boundary改造

    • 加减空格
    • 前面添加恶意参数
    • 多个boundary污染
    • 回车换行污染
    • 分割污染

2.3 文件名构造技巧

  • 特殊符号替换与构造异常闭合

    filename='shell.jspx.jsp'
    filename=shell.jspx.jsp
    filename=shell.jspx.jsp'
    "filename"=shell.jspx;
    
  • 重写技巧

    filename=shell.jpg;filename=shell.jspx;
    filename=shell.jspx;filename=shell.jpg;
    
  • 大小写变换

    FileName=shell.jspx.jsp'
    
  • 参数污染

    FileName=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaashell.jspx.jsp'
    FileName =shell.jspx(加空格)
    filename===="shell.jspx.jsp1"(加等号)
    FileName =shell.jspx(前后加空格)
    
  • 文件名编码

    filename=\u0073\u0068\u0065\u006c\u006c\u002e\u006a\u0073\u0070
    
  • 回车换行

    FileName=shell.jspx.
    jsp
    File
    Name=shell.jspx.jsp'
    

2.4 其他HTTP头改造

  • Accept-Encoding

    Accept-Encoding: gzip
    Accept-Encoding: compress
    Accept-Encoding: deflate
    Accept-Encoding: br
    Accept-Encoding: identity
    Accept-Encoding: *
    
  • 修改请求方式

    • POST改为GET/PUT等其他方式
  • Host头部绕过

    • 对Host进行回车换行
    • 修改Host头部
    • Host跟链接
    • 改为127.0.0.1
    • 删除Host

3. 迂回打击方法

3.1 基于HTTP的绕过

  • 免杀马

    • 制作WAF无法识别的恶意文件
    • 需要持续更新免杀技术
  • 分块传输

    • 结合参数污染效果更佳
  • 修改长度字段

    • 大数据污染使WAF丢弃检测
    • 确保后端能接收完整数据
  • 修改传输编码

    • 手动修改编码方式
  • 基于系统特性添加字段

    • 如ASP专属bypass-devcap-charset
  • 修改头部+内容结合

    • 伪装为图片等格式
    • 中间插入恶意代码
  • 增加多个boundary

    • 打乱恶意内容结构
  • 文件名写入文件

    • Windows下利用多个<<<<写入文件

3.2 其他绕过方法

  • 寻找真实IP

    1. 利用SSL证书
    2. 通过子域名
    3. 公司其他业务
    4. 信息泄露(GitHub, Google等)
    5. 专用CDN查找网站
    6. 已知工具
    7. 搜索引擎(fofa等)
    8. HTTP返回信息
    9. 邮箱弱口令
    10. 社会工程学
  • 利用子域名攻击

    • 主站防护严格但子域名可能未加WAF
    • 子域名可能在白名单中
  • 利用设备漏洞

    • 寻找VPN等设备漏洞

4. WAF检测特性分析

WAF检测通常基于以下特性:

  1. 只判断后缀:较少见,开发白名单可完成
  2. 只判断内容:较少见
  3. 内容后缀同时判断:较常见
  4. 根据文件后缀判断内容检测:较常见
  5. 根据Content-Type判断内容检测:较常见

5. 绕过思路总结

WAF绕过核心思路是破坏其规则匹配:

  1. 基于正则匹配的绕过

    • 参数污染
    • 正则破坏
    • 打乱WAF检测
  2. 基于正则匹配的缺失

    • 修改请求方式
    • 使WAF不检测特定内容
  3. 基于操作系统特性

    • 后缀名加特殊符号
    • 利用系统解析特性

关键原则:既要绕过WAF,又要让后端能正确识别。可通过污染、多写、添加删除等方式实现。

6. 实战建议

  1. 先分析WAF规则特性:

    • 测试后缀名限制
    • 测试内容检测
    • 测试组合检测
  2. 根据分析结果选择合适方法:

    • 硬怼:针对已知规则弱点
    • 迂回:利用系统或中间件特性
  3. 保持方法更新:

    • WAF规则不断进化
    • 需要持续学习新技术
  4. 合法合规:

    • 仅在授权测试中使用
    • 遵守法律法规
文件上传绕过技术全面指南 1. 文件上传绕过基础思路 文件上传绕过主要分为两种思路: 1.1 硬怼方法 直接针对WAF的检测规则进行突破 适用于对WAF规则有一定了解的情况 1.2 迂回打击 利用系统特性或中间件漏洞绕过 寻找真实IP绕过云WAF等间接方法 2. 硬怼方法详解 2.1 后缀名Fuzz 测试各种可能的后缀名变体 包括中间件配置文件后缀 寻找WAF规则中可能遗漏的后缀 2.2 HTTP头变量改造 Content-Type修改 : 删除Content-Type 修改为其他类型(application/text, image/jpeg等) 添加charset参数(ibm869, iso-8859-13等) 大小写变换 重复传入 回车换行污染 Content-Disposition改造 : 溢出绕过(添加大量字符) 回车换行 双写绕过 参数污染 boundary改造 : 加减空格 前面添加恶意参数 多个boundary污染 回车换行污染 分割污染 2.3 文件名构造技巧 特殊符号替换与构造异常闭合 : 重写技巧 : 大小写变换 : 参数污染 : 文件名编码 : 回车换行 : 2.4 其他HTTP头改造 Accept-Encoding : 修改请求方式 : POST改为GET/PUT等其他方式 Host头部绕过 : 对Host进行回车换行 修改Host头部 Host跟链接 改为127.0.0.1 删除Host 3. 迂回打击方法 3.1 基于HTTP的绕过 免杀马 : 制作WAF无法识别的恶意文件 需要持续更新免杀技术 分块传输 : 结合参数污染效果更佳 修改长度字段 : 大数据污染使WAF丢弃检测 确保后端能接收完整数据 修改传输编码 : 手动修改编码方式 基于系统特性添加字段 : 如ASP专属bypass-devcap-charset 修改头部+内容结合 : 伪装为图片等格式 中间插入恶意代码 增加多个boundary : 打乱恶意内容结构 文件名写入文件 : Windows下利用多个<<< <写入文件 3.2 其他绕过方法 寻找真实IP : 利用SSL证书 通过子域名 公司其他业务 信息泄露(GitHub, Google等) 专用CDN查找网站 已知工具 搜索引擎(fofa等) HTTP返回信息 邮箱弱口令 社会工程学 利用子域名攻击 : 主站防护严格但子域名可能未加WAF 子域名可能在白名单中 利用设备漏洞 : 寻找VPN等设备漏洞 4. WAF检测特性分析 WAF检测通常基于以下特性: 只判断后缀 :较少见,开发白名单可完成 只判断内容 :较少见 内容后缀同时判断 :较常见 根据文件后缀判断内容检测 :较常见 根据Content-Type判断内容检测 :较常见 5. 绕过思路总结 WAF绕过核心思路是破坏其规则匹配: 基于正则匹配的绕过 : 参数污染 正则破坏 打乱WAF检测 基于正则匹配的缺失 : 修改请求方式 使WAF不检测特定内容 基于操作系统特性 : 后缀名加特殊符号 利用系统解析特性 关键原则:既要绕过WAF,又要让后端能正确识别。可通过污染、多写、添加删除等方式实现。 6. 实战建议 先分析WAF规则特性: 测试后缀名限制 测试内容检测 测试组合检测 根据分析结果选择合适方法: 硬怼:针对已知规则弱点 迂回:利用系统或中间件特性 保持方法更新: WAF规则不断进化 需要持续学习新技术 合法合规: 仅在授权测试中使用 遵守法律法规