绕过CDN查找网站真实ip
CDN简单介绍
CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把用户经常访问的静态数据资源直接缓存到节点服务器上,当用户再次请求时,会直接分发到离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。
使用CDN有以下优势:
- 提高用户访问速率,优化用户使用体验
- 隐藏真实服务器的IP
- 提供WAF功能,目前很多CDN也提供了WAF的功能,我们的访问请求会先经过CDN节点的过滤,该过滤可对SQL注入、XSS、Webshell上传、命令注入、恶意扫描等攻击行为进行有效检测和拦截。CDN节点将认为无害的数据提交给真实的主机服务器
CDN的配置方式如下:
- 将域名的 NS 记录指向 CDN 厂商提供的 DNS 服务器
- 给域名设置一个 CNAME 记录,将它指向CDN厂商提供的另一个域名
这里举一个阿里云CDN加速服务的例子:
配置CDN后的网络拓扑:
几种访问方式的不同:
- 传统访问:用户访问域名–>解析服务器ip地址–>访问目标主机
- CDN加速访问:用户访问域名–>CDN节点–>真实服务器ip–>访问目标主机
- 带waf的cdn:用户访问域名–>CDN节点(waf)–>真实服务器ip–>访问目标主机
检测有无CDN
检测CDN的方法有很多,下面列举几种
-
使用ping命令:ping一下目标网站,如果响应的域名很长的话,一般就存在cdn
-
使用多地ping(又称超级ping):使用不同地方的 ping 服务,输入要ping的域名,如果返回的ip地址是多个则极有可能是使用了CDN,如果只有一个ip就是没有使用CDN。这里给出一些多地ping网站:
-
使用 nslookup命令 进行检测,如果返回域名解析对应多个 IP 地址多半是使用了 CDN
-
使用cdnChecker工具:https://github.com/alwaystest18/cdnChecker
-
使用X情报社区-微步在线平台:https://x.threatbook.com/
输入IP查询后未显示CDN,则为真实IP
此外,还可以搭配插件适用,插件地址:X情报查询助手 (google.com)
CDN的绕过
在渗透测试中,为了要知道网站服务器的真实IP,我们必须绕过CDN查找出网站的真实ip地址
利用DNS历史解析记录
查询域名的历史解析记录,可能会找到网站使用CDN前的解析记录,从而获取真实ip(因为有可能目标网站的cdn是今年或者去年开的,所以我们通过查看网站的历史dns解析记录可以得到目标的真实网站地址,因为没有开cdn之前的历史ip大概率是真实ip),相关查询的网站如下:
- https://dnsdb.io/zh-cn/
- https://x.threatbook.cn/
- http://toolbar.netcraft.com/site_report?url=
- http://viewdns.info/
- http://www.17ce.com/
- https://community.riskiq.com/
- http://www.crimeflare.com/cfssl.html
- https://tools.ipip.net/cdn.php
- https://viewdns.info/iphistory/
- https://site.ip138.com/
- https://securitytrails.com/
- https://sitereport.netcraft.com/
除了过去的 DNS 记录,即使是当前的记录也可能泄漏原始服务器 IP。例如,MX 记录也可能泄漏原始服务器IP
查询子域名
一般适用于主站开启cdn,而子域名没有配置cdn的情况。毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个 C 段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实 IP。那么这里就要先挖掘对应主域的子域名了,属于信息搜集的一种,有以下几种手段:
-
搜索引擎查询
#使用Google、baidu、Bing等传统搜索引擎语法搜索子域名,这里以收集www.baidu.com的子域名为例 site:baidu.com inurl:baidu.com baidu.com -www
-
在线查询
-
子域名爆破工具
- Layer子域名挖掘机
- wydomain:https://github.com/ring04h/wydomain
- subDomainsBrute:https://github.com/lijiejie/
- Sublist3r:https://github.com/aboul3la/Sublist3r
Mx记录或邮件配合备案信息(又称利用网站邮件头信息、邮件服务器)
一般的邮件系统都在内部,没有经过CDN的解析。很多站点都有发送邮件的功能,如Rss邮件订阅、邮箱注册、邮箱找回密码,只要有邮箱发送功能,我们就可以让服务器给我们的邮箱服务器发邮件,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的),或者在邮件源码(邮件头信息)里面就会包含服务器的真实 IP
国外主机解析域名(又称国外多ping)
大部分 CDN 厂商因为各种原因(如节约成本)只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。下面使用一些国外多ping的网站:
- https://asm.ca.com/zh_cn/ping.php
- https://asm.ca.com/en/ping.php
- http://host-tracker.com/
- http://www.webpagetest.org/
- https://dnscheck.pingdom.com/
- https://get-site-ip.com/
- https://tools.ipip.net/cdn.php
技巧:地区选择非洲或者一些比较落后的地方,因为有一些cdn的配置是可以进行区域划分的,比如说只加速中国、美国、日本这些地区。在非洲这些国家,一般不会布置一些节点,因为这些地区没有什么这方面的业务
CDN配置错误导致的绕过
下面列举常见的CDN配置错误:
- 仅配置了www域:比如,为了方便用户访问,会将
www.test.com
和test.com
解析到同一个站点,但是只在CDN配置了www.test.com
,这时候通过访问test.com
,就可以绕过 CDN - 仅配置了https协议:站点同时支持http和https访问,但CDN只配置了https协议,那么这时使用http访问即可绕过