前言
在渗透测试的信息搜集阶段,在搜集到目标主站之后常常需要获取的对方网站的真实IP去进一步的信息搜集,但是在目前主流的网站大多都部署了CDN,将资源部署分发到边缘服务器,实现均衡负载,降低网络堵塞,让用户能够更快地访问自己的网站。
CDN的全称是Content Delivery Network,即内容发布网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。(百度百科)
CDN给用户带来便捷的同时也给安全人员带来了更大的挑战,如果网站存在CDN,那么你拿到的IP也是一个分发的虚拟节点,在这个节点所搜集的信息基本是无用功。所以,我们必须绕过CDN去找到网站的真实IP。
0x02 判断CDN的存在
那么我们要如何判断一个网站是否存在一个CDN呢?
1、CMD命令
通过nslookup命令进行检测,如果返回域名解析对应多个 IP 地址多半是使用了 CDN。
2、利用在线网站
http://www.17ce.com
http:/ping.chinaz.com
http:/ping.aizhan.com
http://ce.cloud.360.cn
利用在线网站进行全国多地区的ping服务器操作,然后对比每个地区ping出的ip结果,查看这些ip是否一致,如果都是一样的,极有可能不存在CDN。如果ip大多不太一样或者规律性不强,可以尝试查询这些ip的归属地,判断是否存在CDN。以http:/ping.chinaz.com
为例子,去ping一下百度搜索的ip,这种就是很大几率存在CDN的。
3、使用各种在线工具帮助检测目标网站是否使用了CDN
推荐网址
http://www.cdnplanet.com/tools/cdnfinder/
http://www.ipip.net/ip.html
绕过CDN寻找真实IP
1、同国家IP地址访问查询
假设网站是美国的,你用本地ip去访问的时候返回的是该美国CDN返回的IP,但是你使用了美国本土的IP,他可能可以返回真实IP。
2、子域名查询 由于目标服务可能在主站上做好了相应的CDN,但是由于种种原因例如部署费用过高,或者对二级域名不上心等,所以导致二级域名没有部署到CDN,这时我们可以从这个方面入手进行查询。利用子域名搜集工具等搜集到足够的子域名后,便可以对通过子域名进行真实IP的搜集
3、用phpinfo.php或者php探针去查看泄露的信息
在开发网站的时候,开发者可能会将一时疏忽忘记将可能泄露信息的 php探针等处理掉,让我们有机可乘
通过谷歌语法去搜集
inurl:phpinfo.php inurl:xxxxxx
4、查询域名的解析记录 通过查看查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的相关记录,相关查询网站有:
https://dnsdb.io/zh-cn/ ###DNS查询
https://x.threatbook.cn/ 微步历史DNS记录,在搜索框直接搜索就行
http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询
http://viewdns.info/ ###DNS、IP等查询
https://tools.ipip.net/cdn.php ###CDN查询IP,也可以大致分析出目标的真实IP段。
https://ipchaxun.com/
5、利用fofa等搜索引擎
在网页中将title标签提取出来,然后fofa搜索框
title = "xxxxxxx"
查到到的ip可以拿到和微步的DNS历史查询来对比 常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip
6、利用邮箱反查
在很多网站都有忘记密码的功能,国内网站大多数都可以通过注册账号,然后通过忘记密码来获得一封来自网站邮件服务器的一封邮件,而国外网站大多数都存在RSS订阅服务,通过绑定邮箱订阅同样也可以获得邮件,如果不想暴露自己的邮箱,可以利用临时邮箱来进行搜集
申请临时邮箱,利用临时邮箱去注册账号
临时邮箱中会得到一封带有验证码的邮件
此时查看一下原文可得来自邮件服务器的IP:
7、扫全网 这种方法其实非常费时费力,如果实在没有突破口可以进行信息搜集,可以借助扫描脚本来搜集
参考脚本
https://github.com/boy-hack/w8fuckcdn 全网扫描脚本
https://github.com/Tai7sy/fuckcdn E语言版本
总结
在实际的测试中遇到的主站都基本上存在CDN,所以想要找到站点服务器的真实IP变得尤为重要。
拿到真实IP后就可以在测试机上更改host文件,访问目标网址时直接访问那个IP。