上传_waf绕过
文章目录
学前必看
大多WAF 匹配原则
1. 看见上传.php文件名马上拦截
2. 看见上传php.php文件名限制左边或者右边
反思绕过
是否可以让WAF匹配不到后缀却能执行php文件?
让我们一起来探寻绕过思路吧!!!
可绕的位置
Content-Disposition
一般可以任意修改,甚至删除
filename-
可以修改
Content-Type
视情况定,需要考虑网站上传验证是否处理
三个位置绕过实验
实验一:%00加url编码绕过
原理:利用截断加编码让waf匹配不到php后缀并且我们自己可以解析为php文件
-
filename="x.php%00.jpg"
-
使用 空格x.php%00.jpg绕过
-
吧%00右键url编码变成了一个框框,使其解析不到文件名php,但是%00同时又在截断,所以最后只省下空格x.php
- %20x.php访问,成功上传
- 实验成功
实验二:去掉引号绕过
原理:编程语言中变量后面一般都有双引号,有时候waf没有考虑到我们去掉双引号而存在绕过
- filename="x.php%00.jpg
- 可以去掉左右双引号也可以去掉单边
- 可看到该方法已经被拦截
实验三:双文件名绕过
原理:开发waf的作者只考虑到了单个变量提交,而没考虑到我们复制一个fiename,产生了循环,也就只匹配了第一个
- filename= ; filename="a.php"
- 实验成功
实验四:换行绕过
原理:类似于换行绕过
filename=”x.
p
h
p
- 实验成功
实验五:Content-Disposition
- 该位置通常就是添加干扰符绕过
- 实验失败
实验六:Content-Type
- 该位置必须是验证类型,添加干扰符才可成功
- 实验失败
实验七:上传Fuzz
使用工具生成**后缀名字典
参考连接-------->>>工具生成**字典
**可绕WAF的文件后缀名
- 选择**的位置
- 取消编码,便可开始**
- 寻找length是不同的,观察响应包,
- 寻找出FUZZ出来的上传文件名
实验结论
- 一.可以发现三个位置fiename位置最容易bypass成功,所以得出结论,fuzz最好就在fiename位置即可
- 二.上传也可FUZZ,FUZZ可以快速寻找出上传成功的文件名,当然也容易触发安全防御,容易被panIP,所有最好有代理池