查了一下关于这个问题的国内外大大小小的网站,对其中说的一些方法总结归纳形成。
首先,先要明确一个概念,如果人CDN做得好,或者整个站都用CDN加速了,你是几乎找不到他的源站IP的,因为对于你来说被CDN给屏蔽了,是个黑盒子。
下面,我们从一些特别的角度去绕过CDN找源站IP,如有错处,请大家不吝赐教
由于成本问题,可能某些厂商并不会将所有的子域名都部署 CDN,所以如果我们能尽量的搜集子域名,或许可以找到一些没有部署 CDN 的子域名,拿到某些服务器的真实 ip/ 段
然后关于子域名搜集的方式很多,就不一一介绍了,我平时主要是从这几个方面搜集子域名:
1、SSL 证书
2、爆破
3、Google Hacking
4、同邮箱注册人
4、DNS 域传送
5、页面 JS 搜集
6、网络空间引擎
查询 DNS 历史解析记录
常常服务器在解析到 CDN 服务前,会解析真实 ip,如果历史未删除,就可能找到
常用网站:
http://viewdns.info/
https://x.threatbook.cn/
http://www.17ce.com/
https://dnsdb.io/zh-cn/
https://securitytrails.com/
http://www.ip138.com/
https://github.com/vincentcox/bypass-firewalls-by-DNS-history
MX 记录(邮件探测)
这个很简单,如果目标系统有发件功能,通常在注册用户/找回密码等地方,通过注册确认、验证码等系统发来的邮件进行查看邮件原文即可查看发件IP地址。
SSL 证书探测
我们可以利用空间引擎进行 SSL 证书探测
443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:www.baidu.com
再放一个搜集证书的网站:
https://crt.sh
一个小脚本,可以快速搜集证书(python)
import requests
import re
TIME_OUT = 60
def get_SSL(domain):
domains = []
url = 'https://crt.sh/?q=%25.{}'.format(domain)
response = requests.get(url,timeout=TIME_OUT)
# print(response.text)
ssl = re.findall("<TD>(.*?).{}</TD>".format(domain),response.text)
for i in ssl:
i += '.' + domain
domains.append(i)
print(domains)
if __name__ == '__main__':
get_SSL("baidu.com")
1.判断是否存在CDN
查找网站真实IP的第一步是先查看当前站点是否部署了CDN,而较为简单快捷的方式就是通过本地Nslookup查询目标站点的DNS记录,若存在CDN,则返回CDN服务器的地址,若不存在CDN,则返回的单个IP地址,我们认为它就是目标站点的真实IP。
除了使用nslookup,还可以通过第三方站点的DNS解析记录或者多地ping的方式去判断是否存在CDN。判断CDN只是个开始,不加赘述。。。
2.二级域名入手
目标站点一般不会把所有的二级域名放cdn上,比如试验性质的二级域名。Google site一下目标的域名,看有没有二级域名出现,挨个排查,确定了没使用cdn的二级域名后,本地将目标域名绑定到同ip,能访问就说明目标站与此二级域名在同一个服务器上。不在同一服务器也可能在同C段,扫描C段所有开80端口的ip,挨个试。如果google搜不到也不代表没有,我们拿常见的二级域名构造一个字典,猜出它的二级域名。比如mail、cache、img。
扫描c段好用工具:zmap(https://www.cnblogs.com/China-Waukee/p/9596790.html)
3.境外ping
很多国内的CDN没有节点对国外服务,国外的请求会直接指向真实ip。有人说用国外NS和或开国外VPN,但这样成功率太低了。我的方法是用国外的多节点ping工具,例如just-ping,全世界几十个节点ping目标域名,很有可能找到真实ip。
4.找国外冷门DNS:
大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,国外的请求有很大的几率会直接指向真实ip。不用上国外vpn,只需要:nslookup xxx.com 国外dns,就行了,例如:nslookup xxx.com 8.8.8.8,提示:你要找冷门国外DNS才行,像谷歌的DNS,国内用的人越来越多了,很多CDN提供商都把谷歌DNS作为国内市场之一,所以,你查到的结果会和国内差不了多少
用国外的多节点ping工具,例如just-ping(http://www.just-ping.com/),全世界几十个节点ping目标域名,很有可能找到真实ip。
https://censys.io/certificates/ | ###通过SSL证书查询真实IP(推荐) |
https://site.ip138.com/ | ###DNS、IP等查询 |
http://ping.chinaz.com/ | ###多地ping |
http://ping.aizhan.com/ | ###多地ping |
https://myssl.com/dns_check.html#dns_check | ###DNS查询 |
https://securitytrails.com/ | ### DNS查询 |
https://dnsdb.io/zh-cn/ | ###DNS查询 |
https://x.threatbook.cn/ | ###微步在线 |
http://toolbar.netcraft.com/site_report?url= | ###在线域名信息查询 |
http://viewdns.info/ | ###DNS、IP等查询 |
https://tools.ipip.net/cdn.php | ###CDN查 询IP |
2、相关工具
子域名查询工具:layer子域名挖掘机,dirbrute,Oneforal
(下载链接:https://github.com/shmilylty/OneForAll,推荐)