文件上传bypass安全狗
字数 925 2025-08-05 11:39:40

文件上传Bypass安全狗4.0技术详解

前言

本文详细分析绕过安全狗4.0文件上传防护的技术方法,适用于渗透测试人员和安全研究人员。安全狗作为国内常见的WAF产品,其4.0版本对文件上传防护进行了多项改进,但依然存在可绕过的方法。

基本原理

WAF在文件上传时主要检查以下内容:

  • 请求的URL
  • Boundary边界
  • MIME类型
  • 文件扩展名
  • 文件内容

常见扩展名黑名单包括:

asp|asa|cer|cdx|aspx|ashx|ascx|asax
php|php2|php3|php4|php5|asis|htaccess
htm|html|shtml|pwml|phtml|phtm|js|jsp
vbs|asis|sh|reg|cgi|exe|dll|com|bat|pl|cfc|cfm|ini

测试环境

  • 环境:MySQL + Apache + PHP
  • WAF:安全狗4.0
  • 上传页面限制:仅允许Content-Type为image/gif、image/jpeg、image/pjpeg的文件

绕过技术详解

1. 增大文件大小

  • 原理:安全狗对Content-Disposition字段的长度验证不准确
  • 方法:增加Content-Disposition字段的长度
  • 示例
Content-Disposition: form-data; name="file"; filename="shell.php" 
[大量空格]

2. 文件名中间加符号

  • 方法:在文件名中间加入特殊字符扰乱匹配
  • 有效字符;"'
  • 示例
filename="shell;.php"
filename="shell'.php"

3. 切断filename=与值

  • 方法:在filename=和值之间加入干扰
  • 示例
filename= ; filename="shell.php"

4. 文件名换行

  • 方法:在filename值中插入换行符(0x0a)
  • 示例
filename="shell
.php"

5. 多个等号

  • 方法:使用多个等号干扰匹配
  • 示例
filename=="shell.php"
filename==="shell.php"

6. %00截断

  • 原理:利用0x00作为结束符的特性
  • 方法:在文件名后添加%00
  • 示例
filename="shell.php%00.jpg"

已失效的方法(安全狗4.0)

  1. 去除form-data关键字
  2. Content-Disposition大小写混淆
  3. 添加额外的Content-Type头
  4. 添加额外的Content-Length头
  5. 简单的双引号去除

总结思路

绕过安全狗4.0文件上传防护的核心思想:

  1. 大小写转换:虽然简单大小写混淆已失效,但可尝试更复杂的组合
  2. 干扰字符污染:插入特殊字符、换行符等
  3. 字符编码:使用URL编码、Unicode编码等
  4. 拼凑法:组合多个干扰因素
  5. 边界扰乱:修改boundary或Content-Disposition结构

这些技术思路不仅适用于文件上传绕过,也可应用于其他WAF绕过场景,如SQL注入防护绕过等。实际测试中需要根据目标环境灵活组合使用多种方法。

文件上传Bypass安全狗4.0技术详解 前言 本文详细分析绕过安全狗4.0文件上传防护的技术方法,适用于渗透测试人员和安全研究人员。安全狗作为国内常见的WAF产品,其4.0版本对文件上传防护进行了多项改进,但依然存在可绕过的方法。 基本原理 WAF在文件上传时主要检查以下内容: 请求的URL Boundary边界 MIME类型 文件扩展名 文件内容 常见扩展名黑名单包括: 测试环境 环境:MySQL + Apache + PHP WAF:安全狗4.0 上传页面限制:仅允许Content-Type为image/gif、image/jpeg、image/pjpeg的文件 绕过技术详解 1. 增大文件大小 原理 :安全狗对Content-Disposition字段的长度验证不准确 方法 :增加Content-Disposition字段的长度 示例 : 2. 文件名中间加符号 方法 :在文件名中间加入特殊字符扰乱匹配 有效字符 : ; 、 " 、 ' 示例 : 3. 切断filename=与值 方法 :在filename=和值之间加入干扰 示例 : 4. 文件名换行 方法 :在filename值中插入换行符(0x0a) 示例 : 5. 多个等号 方法 :使用多个等号干扰匹配 示例 : 6. %00截断 原理 :利用0x00作为结束符的特性 方法 :在文件名后添加%00 示例 : 已失效的方法(安全狗4.0) 去除form-data关键字 Content-Disposition大小写混淆 添加额外的Content-Type头 添加额外的Content-Length头 简单的双引号去除 总结思路 绕过安全狗4.0文件上传防护的核心思想: 大小写转换 :虽然简单大小写混淆已失效,但可尝试更复杂的组合 干扰字符污染 :插入特殊字符、换行符等 字符编码 :使用URL编码、Unicode编码等 拼凑法 :组合多个干扰因素 边界扰乱 :修改boundary或Content-Disposition结构 这些技术思路不仅适用于文件上传绕过,也可应用于其他WAF绕过场景,如SQL注入防护绕过等。实际测试中需要根据目标环境灵活组合使用多种方法。