浅析如何绕过云waf

了解一下waf的种类

目前市面上的Waf的形态可以简单分类为三种,分别为硬件Waf、软件Waf、云Waf

三种waf示意图


2015081104292360563.png

  • 硬件WAF优缺点:

    1.可承受较高的吞吐量;

    2.防护范围大(由于硬件防火墙直接串联到了交换机,所以在同一个交换机下的所有服务器,都处于防火墙的防护范围之内)

    3.价格对于中小企业来说过于昂贵…动辄便是几十万甚至几百万

  • 软件WAF优缺点(目前最普遍使用):例如有d盾,绿盟,云盾等

    1.廉价甚至免费

    2.功能丰富, 如扫描恶意木马文件、防篡改、服务器优化、备份等等功能

    3.要实现对每个请求的解析、识别,可能会存在占用服务器内存过多的情况

    4.防护面不够大,应用层的防护有局限性。有可能因为某个部分不够安全,比如某一ip主机上,主域名网站是重点防护部分,最安全。但众多子域名和旁站里,只要一个网站防护没做好,导致服务器被getshell,那么就等于所有这ip上的网站被getshell了

  1. 有的管理员 不更新、配置不当,导致规则库陈旧、防护作用变弱.也就是说,需要专业的人员去维护
  • 云waf(新兴):比如百度云加速、360 网站卫士以及知道创宇的加速乐等
  1. 部署简单,只需把网站的dns修改一下就可以让网站进入云waf防护范围内,甚至,不需要专门的安全人员维护更新

  2. 同时有CDN作用,提高网站访问速度

  3. 不够可靠。云Waf处理一次请求,需要经过DNS解析、请求调度、流量过滤等环节,只要有一个环节出现问题,或者遭遇ddos被打垮了,会导致网站无法访问。必要时,只能手动切换为原DNS来保证业务正常运行,防护作用就没有了,而域名解析需要一定时间,又会导致网站短时间无法正常访问

  4. 存在轻易被绕过的风险,因为是靠域名解析到云waf上,再由云waf过滤请求后发到真实ip来实现防御,一旦真实ip暴露,即被绕过

怎么判断是否为云waf?

有很多办法,ping命令,nslookup,等等,

介绍两种个人觉得比较准,而且方便的测试方法:

第一种办法:上http://ping.chinaz.com

从全国各地ping一下,从结果看就知道是单纯的CDN,云waf,或只是独立ip的站点屏幕截图(46)_wps图片.png
这个是独立ip的网站,各地ping出的ip相同

屏幕截图(45)_wps图片.png
这个网站使用了加速乐CDN,加速乐即创宇盾,搜索后发现是云waf

第二种办法:用域名反查ip历史工具 https://toolbar.netcraft.com/site_report 查看域名曾经对应的ip,甚至能查看曾经的主机类型以及中间件
屏幕截图(50)_wps图片.png
nginx中间件是做反向代理的,ip也在不断变化,基本上已经确定是用了cdn。
虽然nginx的ip没有用,但有的查询记录并不全是nginx做中间件的,从而可以看到曾使用的真实ip,也有可能就是现在的ip

如何寻找CDN背后的网站真实ip?

判断网站有云waf后,可以用很多种方法查找真实ip,

但目前并没有哪种方法是一定有效的,有时候只能都尝试一下,这里汇集了十种方法,仅供参考

1.用nslookup [域名] [国外dns服务器] 查询最近的dns记录

大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,所以有几率会直接解析到真实IP。其实这个方法根本不用上国外vpn,可以使用国外dns查询域名,

所以只需要:
nslookup http://example.com + [国外dns],就行了,
例如:

nslookup https://example.com 8.26.56.26

不过要找冷门国外DNS才行,像谷歌的DNS 8.8.8.8 ,国内用的人越来越多了,很多CDN提供商都把谷歌DNS作为国内市场之一,所以,你查到的结果会和国内差不了多少。
屏幕截图(51)_wps图片_wps图片.png

不过,某些国内网站都会dns查询time out,看运气,但也会有一部分不会

2.查询历史dns解析,如https://dnsdb.io/zh-cn/search,同时我觉得这也是个搜集子域名的好工具,而且子域名也可能和主机在同一个服务器的,结果子域名真实ip泄露后,主域名真实ip也泄露了屏幕截图(52)_wps图片_wps图片.png

3.用网站订阅邮件法查看真实ip:

用邮箱注册,接收邮件,查看原文,可以看到邮件服务所在服务器的地址。但是,有的用云waf的网站会把邮件服务器和web服务器分开,这样查询到的是邮件服务器的ip;有的用云waf的网站干脆不开放邮件注册。。。所以,可以一试,要运气。

首先在需要测试的网站下,查看有没有用邮箱注册的地方,填上自己的邮箱,接收邮件,以QQ邮箱为例:
屏幕截图(56)_wps图片.png
然后查看邮件原文,便会看到这样的文字:

某些地方就可能暴露真实ip

引用网上的解释:“思路就是让服务器主动连接我们告诉我们它的IP,不过使用的是合法的服务,如RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了”。

4.同样的,思路是让网站主动连接我们,所以也可以借助XSS,SSRF等等漏洞,看一下网站请求从何处来,但是,毕竟是在有云waf的情况下,这个办法实现起来就有点困难。。。不过可以说是一种低危变高危的方法

5.神器 fofa.so,搜索关键字,有时就会是网站真实ip,其他网络空间搜索引擎,如钟馗之眼,shodan,也值得尝试
屏幕截图(59)_wps图片_wps图片.png

6.上传文件或发送邮件时抓包查看,有时候会有真实ip暴露在数据包中。

7.ping 完整链接
部分厂商只会要求把 www.example.com cname到cdn主服务器上去,

然而www.example .com和example.com 是两条独立的解析记录 ,

所以ping example.com 有可能会出现真实ip

8.也可以在全球各地ping一下 example.com,如用网站:https://asm.ca.com/zh_cn/ping.php ,有可能会有收获

9.(不推荐)因为一般免费的云waf或者cdn的ddos防护流量只有几gb到几十gb,网上有人通过ddos对着CDN打,把cdn的ddos防护打挂了,网站管理员可能后续会按原本的ip去解析域名,就能暴露真实ip。但是按照前面所说的,这样会干扰到正常业务的展开,不好

10.最后要是都不行,试试Zmap 扫描器?这个扫描器号称扫描全互联网的ip,一个小时内即可完成…

需要先获取ip段,
Apanic提供了每日更新的亚太地区IPv4,IPv6,AS号分配的信息表:http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

写爬虫匹配ipv4,CN的,有大概1w条

这个网站 https://www.ip2location.com/free/visitor-blocker 可以直接下载获取指定国家的ip段,但旧,大概只有6k条

  • apnic|CN|ipv4|1.2.2.0|256|20110331|assigned 分别对应:
  • 等级机构|获得该IP段的国家/组织|资源类型|起始IP|IP段长度|分配日期|分配状态
  • 下载下来不需要管起始ip、ip段长度,删掉文件内容里除ip外的部分丢给zmap用就好
  • 然后按照这个教程http://0535code.com/article/20170217_1688.shtml做下去就好,这里不展开说了

总结:目前收集了一些找cdn背后真实ip的方法,感觉只要管理员安全意识够好,比如配置云waf前换个ip,使得dns历史记录为空,还是可以避免真实ip暴露的,所以,我觉得要是仅仅配置云waf,没有专业安全人员维护,那可不行。。。

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据