CDN绕过技术
CDN介绍
CDN的全称是Content Delivery Network,即内容分发网络。
CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若存在CDN服务,将会影响到后续的安全测试过程
如何判断目标是否存在CDN
利用多节点技术进行请求返回判断
1.超级ping网址:http://ping.chinaz.com/https://ping.aizhan.com/
无CND情况:通过检测,发现返回的IP都一样,所以这是没有CDN
有CDN情况:通过检测,发现有多个IP返回,说明存在CDN
2.Windows命令查询:nslookup,若目标存在多个IP的话,就很有可能有CDN服务
目前常见的CDN绕过技术有哪些
1.子域名查询
1)gobuster进行查询
gobuster dns -d 域名 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -i -t 30 -r 114.114.114.114
dns 指定使用DNS探测模式
-
-d 指定主域名
-
-w 指定字典文件
-
-i 显示域名对应的IP地址
-
-t 指定线程数
-
-r 指定DNS服务器
2)在线工具进行扫描
3)为什么要进行子域名查询?
因为搭建CDN要花钱,所以管理员会对主站,访问量比较大的做cdn服务,但是不会对子站做cdn,这时候就可以通过查找子域名来查找网站的真实IP,一般情况下,子站跟主站在同一个C段内
子域名查询工具
DNS查询:https://dnsdb.io/zh-cn/
微步在线:https://x.threatbook.cn/
在线域名信息查询:http://toolbar.netcraft.com/site_report?url=
DNS、IP等查询:http://viewdns.info/
CDN查询IP:https://tools.ipip.net/cdn.php
SecurityTrails平台: https://securitytrails.com/domain/www.baidu.com/history/a
在线子域名二级域名查询:http://tools.bugscaner.com/subdomain/
4)子域名找真实IP小技巧
一般情况下,www.XXX.com和XXX.com指向的是同一个DNS服务器,进入XXX.com会自动跳转到www.XXX.com,所以XXX.com不需要大流量,不用做CDN。如果加www检测不出来,可以试着去掉,或许就可以得到真实IP了
2.利用邮件服务器接口获取真实IP
邮件服务查询很多公司内部都会有一个邮箱服务器,这种邮箱服务器大部分是不会做CDN的。因为邮箱服务器一般都是公司内部人去访问,所以大部分不做CDN。因此,我们就可以根据对方邮件服务器给我们发送的邮件,来判断对方的IP地址。
- 以Steam为例,这个可能是真实IP
- .百度查询IP
- 所以基本可以确定【208.64.200.236】为 真实ip
3.国外地址查询
有些网站为了节省成本,不会把CDN部署在国外。假设现在你自己的网络公司有一个网站,但你的客户群体主要是在国内,因为国外用户不多,所以就不值得在国外搭建CDN,因此这样从国外访问国内的网站就很可能直接访问的就是主站的真实ip地址。
https://tools.ipip.net/cdn.php
4.遗留文件,扫描全网
-
一些站点在搭建之初,会用一些文件测试站点,例如“phpinfo()”文件,此类文件里就有可能包含了真实的IP地址。可以利用Google搜索引擎搜索关键字“site:xxx.com inurl:phpinfo.php”,搜索站点是否有遗留文件
-
扫描工具:fuckcdn,zmap等
5.黑暗引擎搜索特定文件
google,shodan,zoomeye,fofa等
这里的特定文件,指的是站点的icon文件,也就是网站的图标,一般查看网页源代码可以找到,格式大致“http://www.xx.com/favicon.ico”。在shodan搜索网站icon图标的语法为:http.favicon.hash:hash值,hash是一个未知的随机数,我们可以通过shodan语法来查看一个已经被shodan收录的网站的hash值,来进一步获取到所有带有某icon的网站。
获取icon的hash值
python工具
#Python2 开发别搞错了执行环境
#安装 mmh3 失败记得先安装下这个Microsoft Visual C++ 14.0
import mmh3
import requests
response = requests.get('http://www.xx.com/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print 'http.favicon.hash:'+str(hash)
shodan的语法:http.favicon.hash:hash值
6.DNS历史记录,以量打量
站点在使用CDN服务之前,它的真实IP地址可能被DNS服务器所记录到,此时我们就可以通过DNS历史记录找到目标真实IP。而“以量打量”就是常说的ddos攻击或者说是流量耗尽攻击,在网上开CDN的时候,都会分地区流量,就比如这个节点有100M流量,当这流量用完后,用户再访问就会访问网站真实的ip地址。
情报社区:
https://x.threatbook.cnDNSdb
https://dnsdb.io/zh-cn/