一、判断目标系统是否使用CDN
(但凡规模大一点的公司,基本都用了CDN)
方法一:利用多节点发送ping请求,查看多个地区的响应IP是否相同
超级ping:ping.chinaz.com,ping.aizhan.com,ce.cloud.360.cn,www.17ce.com
第三方查询网站:x.threatbook.com ,get-site-ip.com
多个地区使用的响应IP只有两个,判断没使用CDN:
多个地区使用的响应IP不同,判断使用CDN:
方法二:查看DNS解析出的IP
使用nslookup、dig等命令查看解析出的IP数量(具体操作命令查看另一篇博客:DNS解析)
二、绕过CDN获取真实IP的方法
1、子域名查询
有些域名的主域名,由于用户访问量太大会使用CDN缓解压力,但用户量较小的一些子域名是没有使用CDN的。可以利用这个特性,进行子域名的DNS解析或者超级ping查看结果。
比如,xueersi.com和www.xueersi.com进行超级ping或者dns解析,结果是不同的。
可以通过xueersi.com的解析结果获取目标系统的真实IP地址。
2、邮件服务器查询
跟子域名查询原理一样,有些公司邮件服务的域名也是不做CDN的,可以利用这个特性,进行域名服务器的DNS解析结果获取目标系统的真实IP地址。
比如,超级ping某司的邮件服务器域名,发现响应IP果然都一样。
也可以通过与目标系统进行邮件往来,在我们收到的邮件中选择查看全文,获取真实的邮件服务器地址。
3、国外地址请求
原理同上,中国公司国外的用户量较小,很可能从国外访问也不使用CDN。所以用几个不同的国外地址进行超级ping,若响应IP都一样,就可以判断这个IP为真实地址。
4、使用扫描工具
fuckcdn,w8fuckcdn,zmap等CDN扫描工具,可自行尝试。
相关工具可去github找:
5、黑暗引擎搜索特定文件(zoomeye、shodan、fofa等)
使用shodan查询特定文件的哈希值,从而获取真实IP。
import mmh3
import reqeusts
response = requests.get('http://www.xxx.com/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print('http.favicon.hash:' + str(hash))
更多方法,可参考: https://www.fujieace.com/penetration-test/cdn-find-ip.html