多角度对抗 waf 思路与实例

上传人:ji****en 文档编号:107682827 上传时间:2019-10-20 格式:PDF 页数:39 大小:3.13MB
返回 下载 相关 举报
多角度对抗 waf 思路与实例_第1页
第1页 / 共39页
多角度对抗 waf 思路与实例_第2页
第2页 / 共39页
多角度对抗 waf 思路与实例_第3页
第3页 / 共39页
多角度对抗 waf 思路与实例_第4页
第4页 / 共39页
多角度对抗 waf 思路与实例_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《多角度对抗 waf 思路与实例》由会员分享,可在线阅读,更多相关《多角度对抗 waf 思路与实例(39页珍藏版)》请在金锄头文库上搜索。

1、多角度对抗WAF的思路与实例 Who am I 乌云Id:MayIKissYou 完美世界高级安全工程师 01 WAF 有哪些 Nginx-lua-waf Modsecurity 这里我将所有进行web攻击防护的软件统称为WAF。 02 WAF 在哪里 用户从浏览器发出一个请求( 1.php?id=1%20and1=1 )到最终请求转发到服务器上,中间经历了多少设备,这些工作在网络的第几 层(TCP/IP协议)?我们应用层的数据被哪些设备处理了? 这是一个经典的数通问题,了解WAF在网络空间的位置,我们便可以更清 楚的知道使用哪些知识来协助我们进行WAF bypass。 Know It The

2、n Bypass It 03 WAF BYPASS理解 在我自己看来,所谓的BYPASS WAF实际上是去寻找位于WAF设备之后处理 应用层数据包的硬件/软件的特性。利用特性构造WAF不能命中,但是在应用程 序能够执行成功的载荷,绕过防护。 那些特性就像是一个个特定的场景一样,一些是已经被研究人员发现的, 一些是还没被发现,等待被研究人员发现的。当我们的程序满足了这一个个的 场景,倘若WAF没有考虑到这些场景,我们就可以利用这些特性bypass掉WAF 了。 特性那么多 我想去找找 04 WAF BYPASS 实例(Puzzle) 数据库层bypass 利用数据库的特性来绕过WAF,常见数据库

3、mysql,sqlserver,oracle, postgres。以最常见的mysql数据库为例,我在测试的时候经历了如下这些阶 段。自己在测试WAF的时候喜欢先去select from。这里选择以select from为例 1:select id from table 09 0A 0B 0C 0D A0 20 (起初) 2:select id from table /*/ /*!50000*/ /*!*/(再起初) 3:select id from table select-.1,select!.1,select. 1,select(1),selecthost,select select”1

4、”,select1 (再再起初) 4:select id from table selectx version(), select.corp.corp_id from corp;() 目前大部分WAF经过一段时间 测试之后,select from之间只能填写字母和_ 了,怎么办? 实例1 漏洞名称:一次艰难的安全狗规则绕过 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-0121291 测试sql注入规则绕过的时候,我一般都会先去测试 selectfrom这个点的规 则 1):位置1允许a-z,A-Z以及_和数字 2):位置2允许a-z,A-Z以及_和数字 3):

5、位置3允许a-z,A-Z以及 4):位置4允许a-z,A-Z以及_和数字 实例1 漏洞名称:一次艰难的安全狗规则绕过 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-0121291 实例1 漏洞名称:一次艰难的安全狗规则绕过 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-0121291 如何报错注入?http:/zone.wooyun.org/content/13270 小结 我有备胎三千,WAF何惧之有 WEB服务器层bypass 利用WEB服务器的特性来进行WAF bypass,常见的组合就有asp+IIS aspx+IIS p

6、hp+apache java+tomcat等。 这部分内容大多是用来做http的解析等相关事务的,因此这里我理解的也 就是寻找WAF对于http解析以及真实环境对于http解析的差异特性,利用差异特 性来bypass WAF。 个人观点这部分待挖掘的地方还有很多,而且这部分挖掘出来的特性因该 对于WAF的bypass都是致命的。 WEB服务器层bypass 已有的特性: 1:IIS +asp(%) 特殊符号%,在该环境下当们我输入s%elect的时候,在WAF层可能解析出来 的结果就是s%elect,但是在iis+asp的环境的时候,解析出来的结果为select。 2:IIS+aspx(%u)

7、 Iis服务器支持对于unicode的解析,例如我们对于select中的字符进行 unicode编码,可以得到如下的s%u006c%u0006ect,这种字符在IIS接收到之后 会被转换为select,但是对于WAF层,可能接收到的内容还是 s%u006c%u0006ect,这样就会形成bypass的可能。 3:IIS+asp|aspx HTTP Parameter Polution WEB服务器层bypass 4:apache 畸形的method 有些waf对于method解析严格,例如GET POST等,但是apache服务器解析 却没有那么严格,当我们输入method为 HELLO等非正

8、常字符的时候,也是可以 的,而WAF没有分析后面的提交内容了。 漏洞:http:/www.wooyun.org/bugs/wooyun-2013-024599 WEB服务器层bypass 5:php+apache 畸形的boundary PHP在解析multipart data的时候有自己的特性,对于boundary的识别,只 取了逗号前面的内容,例如我们设置的boundary为-aaaa,123456,php解析 的时候只识别了-aaaa,后面的内容均没有识别。然而其他的如WAF在做解析的 时候,有可能获取的是整个字符串,此时可能就会出现BYPASS。 实例2 漏洞名称:一个有意思的通用wi

9、ndows防火墙bypass 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-0115175 测试思路: 1):测试 id=1 and 1=1 2):测试 id=1 a%nd 1=1 3):测试 id =1 %u0061nd 1=1 测试到这里发现上面的情况都已经被WAF给过滤掉了。 实例2 漏洞名称:一个有意思的通用windows防火墙bypass 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-0115175 然而此处的%u0061引起了我的注意。 当时的想法是: 这里应该%uxxxx可以填写65535次个字符,会不会有不同国家的

10、编码and对应 解析出来成为ascii的and阿!其实当时也就随意一想 写个脚本将65535个字符跑一次得到了如下的结论: %00aa和%00e2是我们的意外收获 实例2 漏洞名称:一个有意思的通用windows防火墙bypass 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-0115175 然后我们使用该方式bypass掉了云锁的防护。 为什么会这样? 网上搜索到参考资料: Author by yuange 我大致理解的是: 我们传入的是widechar,widechar iis可以处理, 会被转换。,多个widechar会有可能转换为同一 个字符。 小结 W

11、eb服务器的未知特性还有很多, 还有很多地方可以挖掘 WAF层Bypass 利用WAF的自身的特性来进行绕过。为了使得WAF能够良好的运行,WAF 在设计的时候就会考虑各方面的情况。例如: 1)WAF 检测性能 2)WAF 负载性能 3)WAF 白名单 4)WAF BUG 5)其他 WAF层Bypass WAF检测性能 硬件WAF以及一些云WAF(可能)在设计的时候都是基于状态的,可能有些厂商 将其称为流。一条流一般是通过一个五元组来标识的源IP,目的IP,源端口, 目的端口,服务。我们在网页上访问一个网页就是一条流。 所谓检测性能就是这条流可大可小,例如我们使用post上传一个文件,可能也

12、是一条流,post的这个文件如果是1个G的大小,WAF真的要去检测1个G的大小 的么? 厂商为了保持自己WAF运行时的良好的性能,在出厂的时候设置了默认的检测 大小,当流的大小高于这个长度的时候默认就不检测了。 因此我们提交填充垃圾数据的payload,就有可能绕过WAF检测了。 WAF层Bypass 实例: 1)http:/zone.wooyun.org/content/17331 bypass 安全狗 使用无效数据填充payload,使得其超过检测的界限。 2)http:/wooyun.org/bugs/wooyun-2010-089246 bypass百度云加速 一个dedecms的系统

13、使用百度云加速,更换请求方式被防御,于是更换请求 方式并且添加无效数据,bypass。 3)bypass阿里云盾(两月前测试) 自己搭建ecs服务器测试有效。 WAF层Bypass WAF负载性能 一些传统硬件防护设备为了避免在高负载的时候影响用户体验,如延时等等问 题,会考虑在高负载的时候bypass掉自己的防护功能,等到设备的负载低于门 限值的时候又恢复正常工作。 WAF层Bypass 实例: 在之前测试IPS的时候有如此情况,实际环境中在wooyun上发现了一个例子。 http:/wooyun.org/bugs/wooyun-2010-094367作者:jannock 将请求并发同时发送

14、多次,多次访问的时候就有几次漏掉了,没有触发waf的拦 截。 WAF层Bypass WAF FUZZ 使用脚本去探测WAF设备对于字符处理是否有异常,上面已经说过WAF在接收 到网络数据之后会做相应的数据包解析,一些WAF可能由于自身的解析问题,对 于某些字符解析出错,造成全局的bypass。 我经常测试的位置: 1):get请求处 2):header请求处 3):post urlencode内容处 4):post form-data内容处 WAF层Bypass WAF FUZZ 实例: 漏洞名称:360网站卫士注入防御规则绕过 漏洞地址:http:/wooyun.org/bugs/wooyu

15、n-2010-091516 测试思路: 使用脚本探测360网站卫士对于urlencode的字符的处理,设计好脚本之后,测试 结果显示当我的url请求包含%26的时候,后面的sql注入的规则没有被360网站卫 士拦截,直接bypass了。 然后直接构造如下payload进行报错注入。 小结:猜测这里%26是&符号,这个是参数的分隔符,而360网站卫士在此处没有 对于%26处理好,导致了全局的bypass。 WAF层Bypass WAF FUZZ 实例: 漏洞名称:安全狗另外一种方式防御规则bypass 漏洞地址:http:/wooyun.org/bugs/wooyun-2010-087545 测试思路: 使用脚本探测安全狗在POST方式下的安全狗的处理。此处脚本使用的是没有 进行urlencode过的字符,测试结果显示,当我的垃圾payload中带有0x00的时 候,会导致安全狗全局bypass,返回我提交的恶意参数的值如select 1 from 2. 小结:猜测这里安全狗对于接收的post数据进行解码,解析的时候碰到0x00之后 解析异常了,存在bug,导致了安全狗的bypass。 WAF层Bypass WAF白名单 WAF在设计之

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号