安全小课堂第119期【渗透测试之几个拦截行为bypass】

现在的网络犯罪案件具有专业化趋势,因为具有隐蔽的特性。例如传销、赌博、色情直播,更多是和手机app的交互,加上https的普及,很多公有云不能通过流量有效甄别网络犯罪行为,从而提供防护服务。

网络对抗不单单是漏洞的利用,越来越能体现攻防对抗,bypass waf的检测和利用就变得越来越有趣了。

JSRC 安全小课堂第119期,邀请到小灰作为讲师就分享下常见的几种waf拦截情形和bypass为大家进行分享。同时感谢小伙伴们的精彩讨论。

 

京安小妹:测试遇到cdn防护?

小灰:

根据CDN的解析原理,从架构层绕过,找到真实IP,根据DNS的解析顺序本地hosts是优先于DNS查询的。本地绑定hosts后,再使用域名访问就是绕过CDN直接访问网站。

1、 nslookup查看域名解析中流量小的记录。

查询域名的NS记录,其域名记录中的MX记录,TXT记录等因为流量小,没有优化线路的需求,有可能指向的是真实IP或同C段服务器。

2、通过C段探测。

如果一个公司的业务可能放在同个机房,IP可能为同C段,先找到子域名未使用cdn的IP,(VPN,SSLVPN的IP一般会是c段),扫c段,通过title和页面内容判断,找真实IP

3、 历史解析。

查询dns解析的IP历史变化,查找真实IP。比较好用的dns解析历史IP网站

https://www.passivetotal.org/,除此之外还可以用其收集子域名。

4、 墙外法(现在不好用了)。

国内的CDN机房刚建立的时候,没有国外节点,甚至是一个机房的C段,国外的请求

会直接指向真实IP。用国外的多节点ping工具,例如http://www.just-ping.com/,全球几十个节点ping目标域名,很有可能找到真实IP。

5、 主动回连

例如某些网站的邮件回复功能,查看来源IP,可能得到真实IP,主要看发送的组件是否带IP字段。找到一个ssrf漏洞或者类似上传远程文件功能,访问我们的服务器,可以得到真实ip

6、 系统配置文件

探针文件phpinfo或某些配置里输出了SERVER[“SERVER_ADDR”]

7、masscan全网扫描,提取web服务,提取内容和测试站点比较。这个思路挺好的,只是有点麻烦,如果扫描正好漏掉了,岂不是哭死。

 

京安小妹:信息收集时候,探测端口、扫描目录被ban?

小灰:

降低频率、修改XFF header头这种方案就不说了。

1、不能扫目录的情况下不要忽略爬虫,对于二次开发的网站,通过爬虫,总能发现没有修改到的链接,可以识别出是什么cms开发的,提供渗透思路。

2、可以借用第三方的资源去降低我们的渗透成本做信息收集。

探测端口可以使用浏览器shodan插件,数据更新特别迅速,从截图可以看到。shodan是分布式主机分工各扫单一端口,入库汇总。对于我们的测试对象,每台主机仅扫描一个端口所以可以防止被ban。端口探测变成了api访问,例如探测一个c段网络服务,速度会更快,更快发现其余资产,缺点就是只扫描常用端口。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

3、 使用tor网络,更换IP的方式,bypass waf的拦截,尤其是手工测试waf规则时候

安全小课堂第119期【渗透测试之几个拦截行为bypass】

4、使用代理池,自动更换ip

17年blackhat上提到的一个工具,利用tor网络做代理池更换IP。项目地址https://github.com/realgam3/pymultitor

Git上的一个http的代理池项目,会从全网找到http代理,自动从代理池随机取代理更换线路。

https://github.com/imWildCat/scylla

安全小课堂第119期【渗透测试之几个拦截行为bypass】

京安小妹:waf处理数据原理流程及可能存在的问题?

小灰:

原理流程:数据链路经过waf——数据的提取——数据预处理——规则匹配

推荐大家阅读篇好文,破-见的《WAF攻防研究之四个层次Bypass WAF》https://weibo.com/ttarticle/p/show?id=2309404007261092631700 ,虽然是16年的文章,但是bypass的思路基本从这四个角度出发,具体遇到,需要分析拦截内容和测试bypass方法。

这样的原理流程环节可能带来防护手段的局限性:

1、链路层:

云waf等cdn防御(通用防护手段),可以通过找到真实ip的方式绕过。

2、资源层:

探测的数据包大小受限,并发请求访问频率受限,导致漏过数据包。

3、协议层:

协议污染和协议未覆盖

4、规则层:

特性或者正则书写错误,导致的规则不全

 

数据提取产生的问题:以struts2-045 漏洞,content-type内容的采集为例,@香草师傅当时分析了各家waf的情况,下面举几个例子

1、某些waf检测攻击的方式简单粗暴,检测到Content-Type中存在${或者%{就拦截, 由于不同WEB Server或容器对于HTTP头部的解析存在差异,最终WAF获取的Content-Type和web容器获取的不一致,导致WAF被绕过。

方式一:在包末尾多添加一个Content-Type:multipart/form-data

如图直接构造EXP会被waf拦截

安全小课堂第119期【渗透测试之几个拦截行为bypass】

添加Content-Type后,成功绕过waf,而且代码能正确执行

安全小课堂第119期【渗透测试之几个拦截行为bypass】

方法二: 换行+空格,因为http协议允许换行+空格,在部分服务器可行如tomcat等支持http头换行的服务器。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

2、某云waf的检测方法也是很简单,直接检测Content-Type中的multipart/form-data,绕过方法很简单,添加Content-Type:smultipart/form-data${exp}后面跟EXP代码就行 

后面跟EXP代码就行

安全小课堂第119期【渗透测试之几个拦截行为bypass】

数据预处理产生的问题:空白符,注释,编码的处理。

这种案例很多,下面讲注入bypass的时候会说提到。

 

规则匹配产生的问题:核心是正则匹配规则。

某次案件中遇到waf的注入拦截,post请求,转换Content-Type:为multipart/form-data后仍被拦截,@落师傅提出在参数中加上filename后绕过,可以猜测正则逻辑是匹到filename就按照文件上传规则检测,不进行注入规则检测。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

加上注释和换行,后端sql语句能正常执行。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

 

京安小妹:sqli是常见的危害较大的漏洞,几种常见waf下,怎么测注入?怎么出数据?    

小灰:

Sqli的三个层次,判断是否存在,证明能出数据,能够跨库出数据。下面我们说说测试绕过规则的流程。

1、某云waf Bypass 

?id=1%20and~~1=1  这样测试使用~取反运算绕过sands的边界匹配,这种基本语句判断是否存在注入。

?id=1 and user()被拦截

/?id=1 or~~116=ascii%23%0a(substring%23%0a(database%23%0a(),1,1))

Union select 拦截,使用–+%0a绕过

?id=1%27or~~1=1 union–+123%0aselect 1

Select 1 from不拦截

Select 1 from dual 拦截

select@b:=(column_name)from{a database.table_name} 使用odbc语法不拦截

union select from1 拦截,在出现union的情况下,from后面跟字符就被拦截,过滤规则特别严

使用@a:的定义,将union select from改成select from union select

?id=1%27or~~1=1%20and@a:=(select@b:=(column_name)from{a database.table_name}%20union–+%0aselect@a 

语句也是能正常出数据的。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

2、某盾waf bypass get请求

测试同理

?id=1%20and~~1=1拦截

?id=1%20and`id`like 1不拦截,可以用来测试是否存在注入

?id=1%27and%20@a:=(select–+%0apass–+%0afrom–+%0adual)–+%0aunion(select%20@a)

 

3、某网站防护软件bypass

这是我16年发现的一个方法,waf在对数据做预处理的时候,将/**/注释替换为空格,再进入规则进行匹配拦截。现在这个逻辑还没有改。

这个是16年的截图,当时防护日志可以看到拦截的处理

安全小课堂第119期【渗透测试之几个拦截行为bypass】

新版的测试

http://192.168.79.131/sqltest.php?a=/*&id=1 union select 1,user from mysql.usre&b=*/

安全小课堂第119期【渗透测试之几个拦截行为bypass】

可以看到测试规则的绕过就是逐步判断过滤了什么,哪些还可用,用知道的姿势,组合绕过,所以可以总结流程写成payload测试。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

 

京安小妹:发现了特殊敏感文件,waf却禁止特殊文件访问?

小灰:

细心和fuzz

1、限制目录访问正则可能这么写/admin/,浏览器发包会转,通过burp发包/admin/即可绕过限制访问目录,系统的403限制,原理不一样。

2、限制文件访问,fuzz后缀,windows忽略%20的特性,例如waf匹配(.*.svn-base$),使用后缀.svn-base%20即可绕过限制。

安全小课堂第119期【渗透测试之几个拦截行为bypass】

安全小课堂第119期【渗透测试之几个拦截行为bypass】

3、 如果是云waf考虑资源限制

多并发状态下,考虑资源消耗,不影响用户体验可能会放过去数据包。例如某云盘资源,突然限制下载,开一个burp重放数据包,云盘资源就能继续下载到。(现在不知道还能不能用,好久没这个需求了QWQ)

安全小课堂第119期【渗透测试之几个拦截行为bypass】

 

 

本期JSRC 安全小课堂到此结束。更多内容请期待下期安全小课堂。如果还有你希望出现在安全小课堂内容暂时未出现,也欢迎留言告诉我们。

安全小课堂的往期内容开通了自助查询,点击菜单栏进入“安全小课堂”即可浏览。

原文链接:https://www.cnblogs.com/Gouwa/p/15907654.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22927

(0)
上一篇 2024年3月16日
下一篇 2024年3月17日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml