WAF介绍
-
Web
应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF
) -
核心目的:防御网站被入侵。
具体手段:检测到你的入侵者,然后拦截你当前访问的页面或者是跳转其他页面,或者是直接禁止你的ip
访问。 -
日常生活中,有些网站不一定安装了
WAF
,但是他可能会有自己的防护策略,过滤你的恶意传参数据,例如传参不能出现union
,不能出现and 1=1
等
WAF检测机制
WAF
检测机制核心就是正则表达式,通过开发人员写在WAF
里面的正则表达式来匹配内容,匹配到了就触发。- 文件内容检测:传统一句话木马,传参任何参数都拦截,同样的传参如果不是一句话木马就不拦。
WAF
的机制不开源。- 防护
sleep,load_file,outfile,benchmard
:
常见的绕过方法【1、4、5、7较常用】
- 用其他函数、写法替代
$a=get_defined_functions(); $a['internal'][841]($_GET['a']);
【这个是一句话木马】。 - 大小写绕过【有些老
WAF
大小写就能绕】。 - 替换绕过:有些过滤规则强行删除检测到的代码,然后执行,可结合双写绕过使用。
uinon => 会把关键词替换为空 ,uniounionn => union
- 编码绕过:网站因为功能需要有编解码,然后因为
WAF
不认识编码后的值然后绕过了。 - 注释绕过:
WAF
有的时候会认为注释后的东西是安全的,然后可以尝试hpp
http://xxxx.com/id=1/*order by 1&id=1 and sleep(1) -- qwe*/
我们发现id
传参传了两次,传参覆盖,后面的覆盖前面的,1 and sleep(1)
这才是真正执行的代码,但WAF认为/**/
里面的注释内容是安全的。
-
白名单绕过:本地访问可能不拦截【
X-Forwarded-For
修改为127.0.0.1
】、管理员权限 【文件白名单 ,如txt
、jpg
、png
】
可以参考文章 —— Dns注入 -
垃圾数据填充:写个一大堆数据,然后传参,
WAF
只检测其中一部分绕过了,因为WAF
检测需要时间且可能有长度限制。【某WAF
有33w
字符】
id=1/*SDASFDGJDGJKDFHKKJEKRHJEHK123154365EJDSFVDHsda*/order by 1 -- qwe
//不要填充中文
- 空格替代
+
(+
是因为URL
编码) 或者是/**/
、`` ,sleep()
用sleep/**/()
代替sleep()
。