天天看点

文件上传之WAF绕过及相安全防护

Content-Disposition:一般可更改

name:表单参数值,不能更改

filename:文件名,可以更改

Content-Type:文件 MIME,视情况更改

数据溢出-防止WAF匹配(xxx...)'

符号变异-防止WAF匹配(' " ;)

数据截断-防止WAF匹配(%00 ; 换行)

重复数据-防止WAF匹配(参数多次)

我以靶场upload-labs第二关进行演示。

我们开启安全狗的上传防护:

文件上传之WAF绕过及相安全防护

第2关上传一个php文件,被安全狗检测到且被拦截:

文件上传之WAF绕过及相安全防护

php加上空格"ph p",可上传,但无法解析。

文件上传之WAF绕过及相安全防护

filename的内容进行溢出。

文件上传之WAF绕过及相安全防护

filename的内容进行溢出虽然可以绕过WAF但是我无法将php文件上传至服务器。

文件上传之WAF绕过及相安全防护

name与filename之间进行溢出

也可绕过WAF但是无法上传php文件。

文件上传之WAF绕过及相安全防护
文件上传之WAF绕过及相安全防护

大量垃圾数据后加“;”

Content-Disposition与name之间的垃圾数据加上分号可绕过安全狗。

文件上传之WAF绕过及相安全防护

可成功上传php文件

文件上传之WAF绕过及相安全防护

经测试,name与filename之间的垃圾数据也可绕过。

文件上传之WAF绕过及相安全防护

可用payload:

filename的内容用单引号括起来(被拦截)

文件上传之WAF绕过及相安全防护

显然被拦截

filename去掉最后一个双引号(被拦截)

文件上传之WAF绕过及相安全防护

被拦截

filename去掉最后一个双引号,再加上分号(后缀不能被解析)

文件上传之WAF绕过及相安全防护

可绕过,可上传,但是无法被解析

filename去掉最后一个双引号,在文件名后缀前任意位置加空格(可行)

文件上传之WAF绕过及相安全防护

可绕过WAF,可上传。

单引号与双引号一致。

只在末尾加双引号(被拦截)

文件上传之WAF绕过及相安全防护

文件名前加双引号或单引号(无法解析)

文件名前加双引号或单引号可绕过waf,也可上传,但是无法解析。

文件上传之WAF绕过及相安全防护

文件名中加入图片后缀提前用分号截断

可用payload:

文件名中加入图片后缀提前用分号截断(可行)

原因是防护软件只检测前面的部分,一旦正确就放行,不再检测后面的

文件上传之WAF绕过及相安全防护

同理结合符号变形可有:

文件名中用%00url编码截断(可行)

文件上传之WAF绕过及相安全防护

直接在数据包中进行换行操作(可行)

文件上传之WAF绕过及相安全防护
文件上传之WAF绕过及相安全防护
文件上传之WAF绕过及相安全防护

重复filename

前面的filename为可接受的文件格式,最后一个为php文件格式,前面的重复多次,可绕过。

文件上传之WAF绕过及相安全防护

filename中配合其他参数

配合Content-Type: image/jpeg:

payload:

文件上传之WAF绕过及相安全防护
文件上传之WAF绕过及相安全防护

字典地址:

手工测试的话有点麻烦,我们可以借助写好的字典配合BP进行批量测试,先在本地测试好了,再在真实环境进行测试,以防会封IP。

我借助fuzzDicts的php字典进行测试。

首先将拦截的数据包发送至Intruder

文件上传之WAF绕过及相安全防护

清除所有变量

文件上传之WAF绕过及相安全防护

将filename的值设置为变量

文件上传之WAF绕过及相安全防护

payload加载字典:

文件上传之WAF绕过及相安全防护

开始攻击:

文件上传之WAF绕过及相安全防护

能否成功取决于字典的好坏。

后端验证:采用服务端验证模式

后缀检测:基于黑名单,白名单过滤

MIME 检测:基于上传自带类型检测

内容检测:文件头,完整性检测

自带函数过滤:参考 uploadlabs关卡的函数

自定义函数过滤:function check_file(){}等

WAF 防护产品:宝塔,云盾,安全公司产品等

上一篇: Presidential-01
下一篇: 磁盘分区