「2019」CDN源站真实IP查找跟踪方式总结
绕过 CDN 寻找真实 IP 地址的各种姿势
个人觉得,绕过 CDN 去寻找主机的真实 ip,更容易能寻找到企业网络的薄弱地带,所以 Bypass CDN 也就变成了至关重要的一点。
0x01 常见 Bypass 方法
域名搜集
由于成本问题,可能某些厂商并不会将所有的子域名都部署 CDN,所以如果我们能尽量的搜集子域名,或许可以找到一些没有部署 CDN 的子域名,拿到某些服务器的真实 ip/ 段
然后关于子域名搜集的方式很多,就不一一介绍了,我平时主要是从这几个方面搜集子域名:
1、SSL 证书
2、爆破
3、Google Hacking
4、同邮箱注册人
4、DNS 域传送
5、页面 JS 搜集
6、网络空间引擎
工具也有很多厉害的,平时我一般使用 OneForALL + ESD + JSfinder 来进行搜集,(ESD 可以加载 layer 的字典,很好用)
查询 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
一个小脚本,可以快速搜集证书
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")
“最后”的Bypass CDN 查找网站真实IP
注:其实与第一篇有重复的的地方,请自行斟酌查看。
0x00起源~
查找网站真实IP过程中我们会经常用到一些Bypass CDN的手法,而Bypass CDN的常见姿势,之前看到过“信安之路”的某位大佬总结的挺好的,于是和小伙伴们又专门的去学习了一波,然后决定将学习心得归结于文字,以便于记录和复习。
0x01判断是否存在CDN
查找网站真实IP的第一步是先查看当前站点是否部署了CDN,而较为简单快捷的方式就是通过本地Nslookup查询目标站点的DNS记录,若存在CDN,则返回CDN服务器的地址,若不存在CDN,则返回的单个IP地址,我们认为它就是目标站点的真实IP。
除了使用nslookup,还可以通过第三方站点的DNS解析记录或者多地ping的方式去判断是否存在CDN。判断CDN只是个开始,不加赘述。。。
小伙伴-胡大毛的www法
以前用CDN的时候有个习惯,只让WWW域名使用cdn,秃域名不适用,为的是在维护网站时更方便,不用等cdn缓存。所以试着把目标网站的www去掉,ping一下看ip是不是变了,您别说,这个方法还真是屡用不爽。
小伙伴-刘正经的二级域名法
目标站点一般不会把所有的二级域名放cdn上,比如试验性质的二级域名。Google site一下目标的域名,看有没有二级域名出现,挨个排查,确定了没使用cdn的二级域名后,本地将目标域名绑定到同ip,能访问就说明目标站与此二级域名在同一个服务器上。不在同一服务器也可能在同C段,扫描C段所有开80端口的ip,挨个试。如果google搜不到也不代表没有,我们拿常见的二级域名构造一个字典,猜出它的二级域名。比如mail、cache、img。
查询子域名工具:layer子域名挖掘机 subdomin
扫描c段好用工具:zmap(https://www.cnblogs.com/China-Waukee/p/9596790.html)
还是“刘正经”的nslookup法
查询域名的NS记录,其域名记录中的MX记录,TXT记录等很有可能指向的是真实ip或同C段服务器。
注:域名解析–什么是A记录、别名记录(CNAME)、MX记录、TXT记录、NS记录(https://www.22.cn/help_34.html)
小伙伴-胡小毛的工具法
这个工具http://toolbar.netcraft.com据说会记录网站的ip变化情况,通过目标网站的历史ip地址就可以找到真实ip。没亲自测试,想必不是所有的网站都能查到。
例:http://toolbar.netcraft.com/site_report?url=http://www.waitalone.cn
小伙伴-狄弟弟的目标敏感文件泄露
也许目标服务器上存在一些泄露的敏感文件中会告诉我们网站的IP,另外就是如phpinfo之类的探针。
小伙伴-匿名H的墙外法
很多国内的CDN没有节点对国外服务,国外的请求会直接指向真实ip。有人说用国外NS和或开国外VPN,但这样成功率太低了。我的方法是用国外的多节点ping工具,例如just-ping,全世界几十个节点ping目标域名,很有可能找到真实ip。
域名:http://www.just-ping.com/
小伙伴-不靠谱的从CDN入手法
无论是用社工还是其他手段,反正是拿到了目标网站管理员在CDN的账号了,此时就可以自己在CDN的配置中找到网站的真实IP了。此法着实适用于“小伙伴-不靠谱”使用。
还是“不靠谱”的钓鱼法
不管网站怎么CDN,其向用户发的邮件一般都是从自己服务器发出来的。以wordpress为例,假如我要报复一个来我这捣乱的坏蛋,坏蛋使用了 CDN,我要找到它的真实ip以便DDOS他。我的方法是在他博客上留言,再自己换个名回复自己,然后收到他的留言提醒邮件,就能知道发邮件的服务器ip 了。如果他没开提醒功能,那就试试他是不是开启了注册功能,wordpress默认是用邮件方式发密码的。
0x03“最后”的总结
小伙伴“最后”来了一波总结:
百因必有果,你的报应就是我~o~
万剑归宗不是火,万法合一才是果~o~
小伙伴们总结了一波又一波方法,“最后”表示不太行,方法很多,每一个看起来都很实用,但实战告诉我们,只有把这些方法都灵活贯通的结合使用才能达到最大的效果。“最后”以胡大毛的www法结合查找网站历史DNS解析记录的方法查找某个站点的真实IP的举例如下:
某站点www.xxx.com的当前解析显示有多个IP,但历史解析仅有一个IP,可以猜测该IP可能是真实IP。
“最后”认为除了需要将方法结合使用之外,辅助工具也是不可缺少的,于是又整理了一波常用的工具和查询平台如下:
1、查询SSL证书或历史DNS记录
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,推荐)
站点banner信息获取:Zmap,masscan等。
参考链接
https://github.com/shmilylty/OneForAll
https://github.com/FeeiCN/ESD
https://github.com/Threezh1/JSFinder
https://github.com/AI0TSec/blog/issues/8
https://www.4hou.com/tools/8251.html
https://www.freebuf.com/sectool/112583.html