文件上传之waf绕过以及修复建议(五)

数据包可修改参数

Content-Disposition: 一般可更改

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

filename :文件名,可以更改

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

前面说了 一些代码会检查mime,所以这个肯定能改来绕过检测。

filename那你随便改,改后缀,或者改名都行,改后缀绕是前端验证

Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。

当 IE 浏览器接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。
Content-Disposition 就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名。所以这个也能伪造

name就不行了,因为他里面的字段跟后端对应的,你这边给他改了,他后端收不到东西了,就寄。

常见绕过方式

数据溢出

这里拿之前那个大小写就能绕过上传的靶机当例子

正常把php改成Php就能正常绕过

但是当我们上传Php后缀时,狗子拦截了

dog

 

垃圾数据就是撑死狗子,构造大量的垃圾数据来撑死他,让他检测不过来完,从而实现绕过。

撑死dog

成功撑死dog

这垃圾数据就在上面那三个可修改的随便灌,md,撑死他。

符号变异

符号变异1

绕过思路原理:

安全狗是匹配两个冒号里面的文件名,你提前给他闭合,狗子就呆了,以为没事 直接放过上传了。

以前还有一种思路是两个冒号去左边一个 ,狗也懵,给放了,现在更新规则不行了,但是思路永在。

这种方式是我在写文章随便测试一下,谁知道也绕过了,补充上吧,跟上面原理一样。

123

 

数据截断

安全狗也是一个程序,他碰到这个%00 他也会被截断。

00截断

比较鸡肋啊 – -,因为安全狗截断了,服务器也截断了,还是存了一个png 

不过这是一种思路所以也写出来吧。

重复数据

filename=”web.Php” 说白了安全狗就检测这里面的内容

那我们多写一些呢?

filename=”x.png”;  filename=”y.jpg”;  filename=”z.gif”;  filename=”web.Php”;  

他这个原理跟参数污染有点像,服务器取最后一个当目标,但是安全狗检测第一个,所以实现绕过。

一个不行,就多写一些。

++了,写的太多了,撑死自己了。

撑死自己

123456

白名单绕过

就是安全狗里面有一些白名单,有一些关键参数就是,我们用关键参数 当名字,就可以直接绕过。

白名单绕过

fuzz测试

这里下好fuzz字典,然后用Intruder模块 进行fuzz测试

fuzz

一测就一大堆能绕过狗。。。

fuzz2

 

安全修复方案

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

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

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

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

自带函数过滤就之前讲的php自带函数非常安全。

还有就是上waf 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论