CDN简介
在渗透测试过程中,经常会碰到网站有CDN的情况。CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把用户经常访问的静态数据资源直接缓存到节点服务器上,当用户再次请求时,会直接分发到离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。
CDN的优势
- 提高用户访问速率,优化用户使用体验。
- 隐藏真实服务器的IP
- 提供WAF功能,目前很多CDN也提供了WAF的功能,我们的访问请求会先经过CDN节点的过滤,该过滤可对SQL注入、XSS、Webshell上传、命令注入、恶意扫描等攻击行为进行有效检测和拦截。CDN节点将认为无害的数据提交给真实的主机服务器。
几种访问方式的不同
- 传统访问:用户访问域名-->解析服务器IP-->访问目标主机
- 普通CDN:用户访问域名-->CDN节点-->真实服务器IP-->访问目标主机
- 带WAF的CDN:用户访问域名-->CDN节点(云WAF)-->真实服务器IP-->访问目标主机
CDN的配置
- 将域名的 NS 记录指向 CDN 厂商提供的 DNS 服务器。
- 给域名设置一个 CNAME 记录,将它指向CDN厂商提供的另一个域名
所以在渗透测试中,为了要知道网站服务器的真实IP,我们必须绕过CDN查找出网站的真实ip地址。
查询域名相关的网站:
- DNS查询:DNSDB
- 微步在线:首页 - 微步在线威胁情报社区
- 在线域名信息查询:http://toolbar.netcraft.com/site_report?url=
- DNS、IP等查询:Your one source for DNS related tools!
- CDN查询IP:全球 CDN 服务商查询_专业的 IP 地址库_IPIP.NET
- SecurityTrails平台:Domain Security, DNS Trails and IP Tools | SecurityTrails
如何判断网站是否有CDN?
很简单,使用不同地方的 ping 服务,查看对应 IP 地址是否唯一,如果不唯一则极有可能是使用了CDN
ping测试网站有:
- 全球Ping测试,在线ping工具 - 网络工具
- 多个地点Ping服务器,网站测速 - 站长工具
- 网站测速工具_超级ping _多地点ping检测 - 爱站网
绕过CDN查找网站真实ip
(1)查询子域名:毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP
(2)查询主域名:以前用CDN的时候有个习惯,只让WWW域名使用cdn,秃域名不适用,为的是在维护网站时更方便,不用等cdn缓存。所以试着把目标网站的www去掉,ping一下看ip是不是变了,别说,这个方法还真是屡用不爽。
(3)邮件服务器:一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的)。
(4)查看域名历史解析记录:也许目标很久之前没有使用CDN,所以可能会存在使用 CDN 前的记录。所以可以通过网站https://www.netcraft.com 来观察域名的IP历史记录。
(5)国外访问:国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此,通过国外在线代理网站https://asm.ca.com/en/ping.php 访问 ,可能会得到真实的ip地址。
(6)Nslookup查询:查询域名的NS记录、MX记录、TXT记录等很有可能指向的是真实ip或同C段服务器。
(7)网站漏洞:利用网站自身存在的漏洞,很多情况下会泄露服务器的真实IP地址
(8)Censys查询SSL证书找到真实IP:利用“Censys网络空间搜索引擎”搜索网站的SSL证书及HASH,在https://crt.sh上查找目标网站SSL证书的HASH,然后再用Censys搜索该HASH即可得到真实IP地址