绕过WAF

绕过WAF
Yatming的博客安全狗
这里我用的3.5版本,后面4.0的版本也会进行讨论.
SQL注入
在进行注入的时候,如果输出诸如:union,select这样的关键字,就会触发WAF拦截。
换不同的函数组合
1 | 拆分字符串函数:mid、left、lpad等 |
但是上面这些这是关于mysql的,其他数据库需要在去查询一下。
例子:
在安全狗中,如果使用and,or这样的关键字的时候就会触发拦截,那么就可以使用其他函数进行绕过。比如:like
1 | http://10.20.0.5/sqli-labs-master/Less-2/index.php?id=1 like 1 |
页面返回正常,输入:
1 | http://10.20.0.5/sqli-labs-master/Less-2/index.php?id=1 like 112 |
替换提交方式
1 | 如果get方式进行拦截,是否可以使用post提交。 |
这里将get请求替换成post请求,虽然没有拦截了,但是没有正常回显了。所以这里需要源码支持。视频中是可以正常回显的,我估计是小迪改了源码。
分块传输
1 | https://github.com/c0ny1/chunked-coding-converter |
缺陷:只能支持post请求体的注入点。
直接编码请求体就行。
http参数污染
1 | 什么是参数污染? |
FUZZ测试过狗
1 | 常见的就是使用注释符,然后往里填充特殊字符,达到绕过 |
同含义函数
文件上传
只要上传php后缀的文件 ,就会被拦截。但是你上传:ph这样的后缀又不会过滤,这样就是典型的格式过滤。
安全狗的规则:
绕过方式—去掉引号(不行)
这里本来在文件名这里有一个冒号。但是这里将其去掉之后,可以尝试绕过,但是我这里没有成功。
1 | 原理:如果在不加上双引号的情况下,waf有可能会将1.php当做和filename一样的变量。 |
加上等于号,使赋值变为比较(可行)
1 | 在程序中,两个等于号是比较的意思,而一个等于号是赋值,所以可以尝试: |
将后缀换行(不行)
1 | 原理:在waf程序判断中,你传输的文件可能是:filename="2.p\nh\np"这样拥有换行符的后缀,导致绕过,但是我这里并不行 |
垃圾数据堆叠(可行)
1 | 原理:程序对数据包接收的大小有限,如果超出程序所能承受的范围,将会溢出,从而绕过 |
无限变量传递(可行)
1 | 原理:和垃圾数据一样,还有点参数污染的味道,不知道不同后端,所带来的变化是不是和参数污染一样。 |
多值传递(可行)
1 | 原理:waf在进行接收的时候,可能就接受第一个传递进来的值。 |
分号隔断(可行)
1 | 原理:waf接受最后一个值(所以这个值得是白名单),但是程序在接受的时候只接收了第一个,分号后面认为是其他参数的值 |
注意我这里上传的时候,我把双引号去掉了,如果你没有去掉:
冒号隔断
1 | 这种方式进行隔断,文件能正常上传,但是会把后面上传的文件内容一并隔断,导致最后上传了一个空的php文件,但是这种方式为啥我还要记录,因为直接创建一个恶意的php文件和创建了之后在往里面写恶意的内容,这两种方式的敏感程度不一样,可能在未来的某一天可以使用某个漏洞往某个文件里面写内容,就可以使用这种方式。 |
1 | 而且这里我还没有去掉双引号也可以隔断。 |
文件包含&代码执行
在安全狗的拦截规则里,他没有关于文件包含和代码执行的规则
but!!!他拦截我的exec这个恶意函数(估计),我连这个靶场都打不开。
看了一下日志,还真是因为靶场本身有恶意函数,在打开页面被安全狗检测到了。
宝塔
没安装明白,简单的办法是有一个公网服务器,但是我没有公网的服务器,所以这里直接就使用视屏中的截图替代吧
宝塔是可以拦截一些代码执行和文件包含的
在宝塔的规则里,如果你传入的参数有这种恶意的关键字的话,就会触发拦截。
1 | txt=Sy=str replace('x','','pxhpxinxfo()');assert ($y);&submit=8688 |
文件上传
用安全狗思路,直接全寄,都不行,宝塔还是太权威了。QWQ
可以换成其他后缀进行上传。但是一般网站本身的源码都会有白名单或者黑名单,这个玩意看命。
SQL注入
用安全狗的思路还可以~
XSS绕过工具
1 | https://github.com/s0md3v/XSStrike |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果













































