绕过CDN系统溯源源站IP
CDN介绍
CDN(Content Delivery Network)内容分发网络,是一种利用分布服务器集群组成流量分配管理网络平台,从而提高用户访问速度的技术。目前有很多厂家能提供这种服务,如Amazon CloudFront、阿里云CDN等。收费上,CDN服务主要是按宽带收、和按请求数收费。
在渗透测试过程中,经常会遇到云WAF会与CDN一起使用的情况。由CDN进行域名解析,指向WAF,最后再到源站,如Cloudflare、阿里云WAF等,通用部署方法可以参考同时部署WAF和CDN。遇到这种情况时,给渗透测试带来了很大阻碍,我们可以尝试绕过CDN找到其源站的真实地址,从而直接绕过WAF直接访问目标源站进行渗透工作。
判断是否存在CDN
首先我们需要确认目标网站是否使用了CDN服务。
- 多地ping:通过多地区同时ping目标域名,对比IP地址是否相同,如果ping出来的IP地址不同,则可能使用了CDN服务。常用在线工具:
http://ping.chinaz.com/
https://www.17ce.com/
https://asm.ca.com/en/ping.php
https://www.cdnperf.com/tools/cdn-latency-benchmark - 域名解析:使用nslookup或dig命令对域名进行解析,一方面查看是否解析出多个IP,注意这些IP归属地是否是CDN服务商的IP。另一方面,如果使用了CDN或者WAF,通常会解析到特殊主机记录,如下则是使用了cloudflare和云盾的DNS解析结果:
$ dig hostadvice.com NS
.....
;; ANSWER SECTION:
hostadvice.com. 86400 IN NS phil.ns.cloudflare.com.
hostadvice.com. 86400 IN NS eva.ns.cloudflare.com.
.....
$ nslookup xxxxx.cn
Server: 10.16.0.222
Address: 10.16.0.222#53
Non-authoritative answer:
xxxxx.cn canonical name = n2tgyckbgrmqfinzwtdhzketipcvyyv1.yundunwaf2.com.
Name: n2tgyckbgrmqfinzwtdhzketipcvyyv1.yundunwaf2.com
Address: 47.110.175.169绕过CDN查找网站真实IP
如果确认存在CDN,就该考虑如何去绕过从而找到目标的真实IP。通常思路有以下几个:
- DNS历史解析记录
- 子/父域名查询
- 网络空间安全引擎搜索
- 信息泄露
- SSL证书信息
- 服务器探针文件、git/svn信息泄露、报错信息、日志信息等
- SSRF漏洞
- 邮件头信息:让服务器发送邮件,查看邮件头信息;给服务器发送一封错误的邮件地址信息,看是否有错误回复
- 国外主机解析域名
- 网站APP
- 全网扫描对比banner:zmap、masscan
DNS历史解析记录
我们可以查询域名历史上解析到过哪些IP,因为在使用CDN之前,域名解析过的IP很可能是服务器的真实IP地址。
常用在线工具:
SecurityTrails
微步在线
https://viewdns.info/iphistory/
https://dnsdb.io/
https://sitereport.netcraft.com/?url=
https://www.dnsqueries.com/en/domain_check.php
https://dnsdumpster.com/
子/父名查询
CDN服务是收费服务,对于资产较多的大型企业或组织来说,可能不会给所有域名都使用CDN。因此可以搜集子/父域名信息,通过子/父域名IP尝试找到源IP。并且通常大型组织的多个资产会分布在一个C段,可以以此作为确认参考。
子域名信息可以使用常见子域名爆破工具,如:OneForAll。
常见在线子域名查询工具如下:
SecurityTrails
https://dnsdb.io/zh-cn/
SSL证书查询
通常接入CDN要求服务器支持SSL并具有证书,SSL/TLS证书通常包含域名、子域名和电子邮件地址。而通过访问IP的443端口可以直接看到证书信息,如果全网扫描IP记录网站证书,则可以对比证书信息找到目标站点。
Censys实现了对整个互联网IP的扫描和证书探测,并记录到数据库中,我们可以通过该网站查询具有相同证书的站点尝试目标网站的真实IP。使用Censys,在输入框中选择Certificates,搜索目标域名,可以看到与目标域名对应的相关资产列表。单击右侧的Explore => What's using this certificate? => IPv4 Hosts。其他语法:
443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:www.xxx.com
80.http.get.headers.server:cloudflareSSRF漏洞
如果目标网站存在SSRF漏洞,可以让目标网站主动发起请求从而泄露真实IP。
邮件头信息
如果网站具有邮箱注册、邮箱找回密码、RSS邮件订阅等功能场景,可以尝试让网站给自己发送邮件,从邮件头信息中获取到网站的真实IP。
网络空间安全引擎搜索
可以使用Fofa、Shodan、Zoomeye搜索,查找扫描收录的域名IP信息。
国外主机解析域名
CDN全球加速和国内加速价格差别较大,一些只有国内业务的企业可能不会买全球加速,因此通过海外的站点进行ping测试或DNS解析,有可能找到真实ip。
大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。
https://dnscheck.pingdom.com/
F5 BIG-IP LTM Cookie
F5负载均衡产品( BIG-IP LTM)在做负载均衡时,会利用持久性Cookie来实现会话保持,Cookie包含了经过编码处理的目标服务器IP和端口信息。当服务器使用F5负载均衡产品做时,可以通过转换Cookie的相关参数获取到目标IP。方法参考:How To Decode BIG IP F5 Persistence Cookie Values和通过F5 BIG-IP LTM的会话Cookie获取Facebook服务器内网IP
BIGipServer<pool_name>=vi20010112000000000000000000000030.20480相关工具
- 在线工具:
http://www.cdnplanet.com/tools/cdnfinder/
https://www.ipip.net/ip.html
https://www.cdnplanet.com/tools/cdnfinder/
https://www.cdnperf.com/tools/cdn-latency-benchmark
https://securitytrails.com/ - 其他搜集的工具:
Cloudsnare.py:censys证书信息(需要API密钥)
HatCloud:crimeflare、ipinfo.io
CrimeFlare:crimeflare、ipinfo.io
bypass-firewalls-by-DNS-history:securitytrails、crimeflare
CloudFail:dnsdumpster、crimeflare、子域名暴力破解
CloudFlair:需要censys API密钥
CloudIP:通过nslookup查询某些子域名(如ftp、cpanel、mail、direct、direct-connect、webmail、portal等)
参考
https://blog.csdn.net/systemino/article/details/98188213
https://www.cnblogs.com/qiudabai/p/9763739.html
https://zhuanlan.zhihu.com/p/33440472
https://www.secpulse.com/archives/136219.html
本文章转裁至ssooking's notebook