渗透测试过程中,信息搜集是很重要的准备步骤。而信息搜集大致有域名搜集,C段及旁站扫描,指纹识别,端口扫描,目录扫描等。

其中域名搜集又分为一级域名和子域名搜集。上一篇文章我们讲解了子域名搜集过程遇到的泛解析问题,爆破得到的子域名可能会泛解析到同个IP。于是通过IP黑名单的方式,达到过滤冗余子域名的效果。本篇博客我们集中于解决域名搜集过程中,如何绕过CDN寻找真实IP的问题。

1 前景知识

通常来讲,通过cmd的ping或者nslookup命令,即能快速找到域名对应IP。但很多站点出于用户体验和安全的角度,使用CDN加速,将域名解析到CDN,这时候就需要绕过CDN来查找真实IP。那么什么是CDN?
CDN全称为Content Delivery Network-内容分发网络。简单理解,资源服务器比作快递发货店家,CDN节点即为各个快递网点。快递网点会寄存一些店家的库存以方便快速发货到用户手中。这种分包的概念即为CDN的核心思想:用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回源站获取,避免网络拥塞。

2 如何判断是否使用了CDN?

  1. 多地 ping

查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:http://ping.chinaz.com/http://ping.aizhan.com/ , http://ce.cloud.360.cn/

  1. 查询DNS记录-使用 nslookup 进行检测

nslookup-name server lookup 用于查询DNS服务器上某域名的DNS记录。如下,我们nslookup www.163.com ,本地DNS服务器返回了多个地址

图片

第一部分:
这里是我们本机的DNS服务器信息。
第二部分:
非权威应答对应的英文是:Non-authoritative answer。什么叫非权威应答?假设某个DNS server没有域名test.com的记录信息,当有客户端通过它请求获取test.com的域名信息,此DNS Server会通过迭代递归的方式从test公司实际存储此记录信息的DNS server中获取test.com的域名信息,反馈给发出请求的客户端,同时会把test.com的记录信息放在自身缓存中放置一段时间,当又有客户端请求test.com域名解析时,此DNS server直接从自身缓存中提取返回给客户端,这个回答叫“非权威回答”,简言之凡是从非实际记录存储DNS server中获取的域名解析回答,都叫“非权威回答”。
Name:z163picipv6.v.bsgslb.cn 指的 www.163.com 域名实际对应的主机名记录。
第三部分:
Address有多个记录, 说明该域名实际对应多个物理主机,用户访问www.163.com时,按照一定规则由其中一台计算机进行应答。(CND的作用)
Aliase: DNS记录中的一个别名,方便我们记忆。

3 Solution

  1. 查询DNS历史记录
    查询域名的NS记录、MX记录、TXT记录等很有可能指向的是真实ip或同C段服务器。除了过去的DNS记录,即使是当前的记录也可能泄漏原始服务器IP。例如,MX记录是一种常见的查找IP的方式。如果网站在与web相同的服务器和IP上托管自己的邮件服务器,那么原始服务器IP将在MX记录中。
    图片

DNS记录类型分为A,CNAME,NS和MX

图片

可以用 https://www.ip138.com/ 查询域名历史解析记录

  1. 查询子域名

毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
各种工具用于子域名爆破:Layer,Oneforall

  1. 利用SSL证书寻找真实原始IP
    在censy上进行搜索,语法:parsed.names: xxxx.com and tags.raw: trusted

4.Http头
利用HTTP标头寻找真实原始IP

5.邮件测试
一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的)

6.国外地址请求
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP

  1. 网站敏感文件泄露,例如:Phpinfo 其中有Server IP信息

  2. F5 LTM解码法(这个方法我不是很理解,但还是贴出来)
    当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。

4 总结

本篇博客核心介绍了CDN,DNS的概念以及nslookup这一工具的简易使用。还有其他绕过CDN的方法我们没有涉及,比如利用Fofa或者Shodan网络空间搜索引擎,这些工具我之前在【粗心程序员,后台惨遭删库勒索 】这篇文章有用到过,感兴趣的小伙伴可以去看看。知识靠积累,目前先总结如上信息。

参考资料