记一次绕过阿里云waf与某不知名waf的双waf上传getshell
字数 1077 2025-08-22 12:23:42

绕过阿里云WAF与某不知名WAF的双WAF上传Getshell技术分析

0x00 前言

本文详细记录了一次成功绕过阿里云WAF与某不知名WAF双重防护的文件上传漏洞利用过程。通过多种技术手段的组合,最终实现了webshell的上传与执行。

0x01 环境分析

目标环境特点:

  • 存在后台任意文件上传漏洞
  • 部署了阿里云WAF作为第一层防护
  • 存在第二层未知WAF防护(在绕过阿里云WAF后触发502错误)

0x02 初始绕过尝试

作者首先尝试了常见的WAF绕过技术,均告失败:

  1. 大包绕过:数据量过大导致无响应
  2. 单双引号绕过:失败
  3. 复写filename:失败
  4. 换行绕过:失败
  5. 修改boundary:失败
  6. 文件名fuzz:失败

0x03 关键绕过技术

3.1 阿里云WAF绕过

初始payload

Content-Disposition: form-data; name="aaa"; ;filename="a.txt",filename="a.txt",filename="a.txt",...[重复多次]...,filename="a.php"

发现:

  • 只有分号后的第一个filename被有效识别
  • 虽然最终上传的是txt文件,但成功绕过了WAF检测

改进payload

Content-Disposition: form-data; name="aaa";,filename="a.txt";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...[大量分号]...;;;;;;;;filename="a.php";
  • 意图使前面的filename失效,让最后一个filename生效
  • 仍被拦截

关键发现

  • 当filename中的文件名被换行分割并在最后一行加入冒号时:
    Content-Disposition: form-data; name="head_portrait";filename="a.p hp":
    
    • 会将.p作为文件后缀上传
    • 不加冒号则被WAF拦截

最终绕过阿里云WAF的payload

Content-Disposition: form-data; name="aaa";,filename="a.t xt":;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...[大量分号]...;;;;;;;;filename="a.php";

3.2 第二层WAF绕过

发现:

  • 使用php后缀返回502错误
  • 使用txt后缀可正常上传,确认存在第二层WAF

绕过方法

  • 增加多个无效的filename参数
Content-Disposition: form-data; name="aaa";,filename="a.t xt":,filename="a.txt",filename="a.txt",...[多个重复]...,filename="a.txt";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...[大量分号]...;;;;;;;;filename="a.php";

3.3 文件内容绕过

成功绕过双WAF后,发现阿里云WAF还会检测文件内容:

  1. 尝试使用垃圾字符填充
  2. 测试多个不同的webshell payload,直到找到可用的

0x04 技术总结

关键绕过点

  1. filename参数污染:通过大量重复和无效的filename参数混淆WAF检测
  2. 特殊符号利用:使用冒号和分号改变解析逻辑
  3. 文件名分割:通过空格分割文件扩展名(如a.p hp
  4. 多WAF分层绕过:针对不同WAF层采用不同策略

防御建议

  1. 服务端应严格校验文件上传的:

    • Content-Disposition头部格式
    • 文件名合法性(去除多余参数和符号)
    • 文件内容类型(结合MIME和扩展名)
  2. WAF规则建议:

    • 检测异常的重复参数
    • 分析完整的请求解析逻辑而非简单模式匹配
    • 对特殊符号组合进行防护

0x05 结论

本案例展示了即使面对阿里云等成熟WAF产品,通过深入分析请求解析逻辑和创造性构造payload,仍有可能实现绕过。这强调了纵深防御和安全开发实践的重要性,不能仅依赖WAF作为唯一防护手段。

绕过阿里云WAF与某不知名WAF的双WAF上传Getshell技术分析 0x00 前言 本文详细记录了一次成功绕过阿里云WAF与某不知名WAF双重防护的文件上传漏洞利用过程。通过多种技术手段的组合,最终实现了webshell的上传与执行。 0x01 环境分析 目标环境特点: 存在后台任意文件上传漏洞 部署了阿里云WAF作为第一层防护 存在第二层未知WAF防护(在绕过阿里云WAF后触发502错误) 0x02 初始绕过尝试 作者首先尝试了常见的WAF绕过技术,均告失败: 大包绕过 :数据量过大导致无响应 单双引号绕过 :失败 复写filename :失败 换行绕过 :失败 修改boundary :失败 文件名fuzz :失败 0x03 关键绕过技术 3.1 阿里云WAF绕过 初始payload : 发现: 只有分号后的第一个 filename 被有效识别 虽然最终上传的是txt文件,但成功绕过了WAF检测 改进payload : 意图使前面的filename失效,让最后一个filename生效 仍被拦截 关键发现 : 当filename中的文件名被换行分割并在最后一行加入冒号时: 会将 .p 作为文件后缀上传 不加冒号则被WAF拦截 最终绕过阿里云WAF的payload : 3.2 第二层WAF绕过 发现: 使用php后缀返回502错误 使用txt后缀可正常上传,确认存在第二层WAF 绕过方法 : 增加多个无效的filename参数 3.3 文件内容绕过 成功绕过双WAF后,发现阿里云WAF还会检测文件内容: 尝试使用垃圾字符填充 测试多个不同的webshell payload,直到找到可用的 0x04 技术总结 关键绕过点 filename参数污染 :通过大量重复和无效的filename参数混淆WAF检测 特殊符号利用 :使用冒号和分号改变解析逻辑 文件名分割 :通过空格分割文件扩展名(如 a.p hp ) 多WAF分层绕过 :针对不同WAF层采用不同策略 防御建议 服务端应严格校验文件上传的: Content-Disposition头部格式 文件名合法性(去除多余参数和符号) 文件内容类型(结合MIME和扩展名) WAF规则建议: 检测异常的重复参数 分析完整的请求解析逻辑而非简单模式匹配 对特殊符号组合进行防护 0x05 结论 本案例展示了即使面对阿里云等成熟WAF产品,通过深入分析请求解析逻辑和创造性构造payload,仍有可能实现绕过。这强调了纵深防御和安全开发实践的重要性,不能仅依赖WAF作为唯一防护手段。