任意文件上传之绕过云waf+本地防火墙双重防护
字数 1133 2025-08-04 00:38:02

绕过云WAF+本地防火墙双重防护的文件上传技术详解

1. 初始发现与WAF拦截分析

  • 发现一个可直接上传任意文件的漏洞点
  • 直接上传PHP文件被云WAF拦截
  • 初步绕过尝试:使用换行+chunk编码可过后缀检测
  • 内容检测WAF特点:同时检测<?()的存在
    • <?phpinfo();会被拦截
    • 单独存在<?()可通过内容检测

2. Host碰撞绕过云WAF

2.1 原理分析

  • 目标站点存在跳转到其他IP的超链接
  • 推测服务器可能部署在同一C段的其他IP上
  • 通过Host碰撞技术寻找真实IP

2.2 实施步骤

  1. 使用Host碰撞脚本扫描目标C段IP
  2. 验证返回的真实IP
  3. 直接访问真实IP绕过CDN和云WAF
  4. 此时只需换行(无需chunk编码)即可过后缀检测

3. 绕过本地防火墙内容检测

3.1 初始尝试

  • 尝试Accept-Encoding: deflate(已过时)
  • 尝试Accept-Encoding: gzip(失败)

3.2 HTTP编码原理

  • Accept-Encoding: 客户端声明支持的编码类型
  • Content-Encoding: 服务器响应的内容编码类型
  • 两者都会影响数据传输格式和压缩算法

3.3 成功绕过方法

  • 使用Content-Encoding: deflate头绕过本地防火墙
  • Content-Encoding: gzip同样有效
  • 注意:未找到真实IP时此方法无效

4. 完整绕过流程总结

  1. Host碰撞找真实IP

    • 绕过云WAF的防护
    • 使后续请求不经过CDN
  2. 内容编码绕过

    • 添加Content-Encoding
    • 绕过本地防火墙的内容检测机制
  3. 文件上传构造

    • 使用换行符处理文件后缀
    • 避免同时使用<?()的PHP代码

5. 技术要点补充

  1. Host碰撞技术

    • 适用于隐藏真实IP的站点
    • 特别适合政府、企业等喜欢分散部署的C段服务器
  2. 内容编码绕过

    • 利用了防火墙对编码内容检测的盲区
    • 需要服务器支持相应的编码解码
  3. 后续问题

    • 即使上传成功,可能面临disable_function限制
    • 需要进一步研究绕过PHP安全限制的方法

6. 防御建议

  1. 对管理员:

    • 严格控制文件上传功能
    • 实施多层防护机制
    • 定期检查服务器真实IP暴露情况
  2. 对开发者:

    • 实现文件内容严格检测
    • 不依赖单一防护措施
    • 对上传文件进行重命名和内容校验
  3. 对安全人员:

    • 监控异常的内容编码请求
    • 记录并分析所有文件上传尝试
    • 实施IP访问频率限制

7. 相关资源

  • HTTP编码详解:https://www.cnblogs.com/xuzhudong/p/8486761.html
  • Host碰撞脚本示例(需自行开发或寻找开源工具)
  • Chunk编码转换工具
绕过云WAF+本地防火墙双重防护的文件上传技术详解 1. 初始发现与WAF拦截分析 发现一个可直接上传任意文件的漏洞点 直接上传PHP文件被云WAF拦截 初步绕过尝试:使用换行+chunk编码可过后缀检测 内容检测WAF特点:同时检测 <? 和 () 的存在 如 <?phpinfo(); 会被拦截 单独存在 <? 或 () 可通过内容检测 2. Host碰撞绕过云WAF 2.1 原理分析 目标站点存在跳转到其他IP的超链接 推测服务器可能部署在同一C段的其他IP上 通过Host碰撞技术寻找真实IP 2.2 实施步骤 使用Host碰撞脚本扫描目标C段IP 验证返回的真实IP 直接访问真实IP绕过CDN和云WAF 此时只需换行(无需chunk编码)即可过后缀检测 3. 绕过本地防火墙内容检测 3.1 初始尝试 尝试 Accept-Encoding: deflate (已过时) 尝试 Accept-Encoding: gzip (失败) 3.2 HTTP编码原理 Accept-Encoding : 客户端声明支持的编码类型 Content-Encoding : 服务器响应的内容编码类型 两者都会影响数据传输格式和压缩算法 3.3 成功绕过方法 使用 Content-Encoding: deflate 头绕过本地防火墙 Content-Encoding: gzip 同样有效 注意 :未找到真实IP时此方法无效 4. 完整绕过流程总结 Host碰撞找真实IP 绕过云WAF的防护 使后续请求不经过CDN 内容编码绕过 添加 Content-Encoding 头 绕过本地防火墙的内容检测机制 文件上传构造 使用换行符处理文件后缀 避免同时使用 <? 和 () 的PHP代码 5. 技术要点补充 Host碰撞技术 适用于隐藏真实IP的站点 特别适合政府、企业等喜欢分散部署的C段服务器 内容编码绕过 利用了防火墙对编码内容检测的盲区 需要服务器支持相应的编码解码 后续问题 即使上传成功,可能面临 disable_function 限制 需要进一步研究绕过PHP安全限制的方法 6. 防御建议 对管理员: 严格控制文件上传功能 实施多层防护机制 定期检查服务器真实IP暴露情况 对开发者: 实现文件内容严格检测 不依赖单一防护措施 对上传文件进行重命名和内容校验 对安全人员: 监控异常的内容编码请求 记录并分析所有文件上传尝试 实施IP访问频率限制 7. 相关资源 HTTP编码详解:https://www.cnblogs.com/xuzhudong/p/8486761.html Host碰撞脚本示例(需自行开发或寻找开源工具) Chunk编码转换工具