前言
#知识点:
0、CDN知识-工作原理及阻碍
1、CDN配置-域名&区域&类型
2、CDN绕过-靠谱十余种技战法
3、CDN绑定-HOSTS绑定指向访问
#前置知识:
1.传统访问:用户访问域名–>解析服务器IP–>访问目标主机
2.普通CDN:用户访问域名–>CDN节点–>真实服务器IP–>访问目标主机
3.带WAF的CDN:用户访问域名–>CDN节点(WAF)–>真实服务器IP–>访问目标主机
#判定标准:
nslookup,各地ping(出现多个IP即启用CDN服务)
#参考知识:
https://zhuanlan.zhihu.com/p/33440472
https://www.cnblogs.com/blacksunny/p/5771827.html
子域名,去掉www,邮件服务器,国外访问,证书查询,APP抓包
黑暗空间引擎,通过漏洞或泄露获取,扫全网,以量打量,第三方接口查询等
#案例资源:
超级Ping:https://www.17ce.com/
接口查询:https://get-site-ip.com/
国外请求:https://tools.ipip.net/cdn.php
全网扫描:https://github.com/Tai7sy/fuckcdn
CDN介绍
CDN的全称是Content Delivery Network,即内容分发网络。
CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若存在CDN服务,将会影响到后续的安全测试过程
如何判断目标存在CDN
利用多节点技术进行请求返回判断
-
- 无CDN情况:
通过检测,发现返回的IP都一样,所以这是没有CDN - 有CDN情况:
通过检测,发现有多个IP返回,说明存在CDN
- 无CDN情况:
- Windows命令查询:nslookup,若目标存在多个IP的话,就很有可能有CDN服务
目前常见的CDN绕过技术有哪些
- 子域名查询
-
- 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服务器 - 在线工具进行扫描
- gobuster进行查询
-
- 为什么要进行子域名查询?
因为搭建CDN要花钱,所以管理员会对主站,访问量比较大的做cdn服务,但是不会对子站做cdn,这时候就可以通过查找子域名来查找网站的真实IP,一般情况下,子站跟主站在同一个C段内 - 子域名查询工具
DNS查询:DNSDB
微步在线:微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区
在线域名信息查询:http://toolbar.netcraft.com/site_report?url=
DNS、IP等查询:ViewDNS.info - Your one source for DNS related tools!
CDN查询IP:全球 CDN 服务商查询_专业的 IP 地址库_IPIP.NET
SecurityTrails平台: https://securitytrails.com/domain/www.baidu.com/history/a
在线子域名二级域名查询:在线子域名二级域名查询工具 - 在线工具
- 为什么要进行子域名查询?
-
- 子域名小技巧
一般情况下,www.XXX.com和XXX.com指向的是同一个DNS服务器,进入XXX.com会自动跳转到www.XXX.com,所以XXX.com不需要大流量,不用做CDN。如果加www检测不出来,可以试着去掉,或许就可以得到真实IP了
- 子域名小技巧
- 邮件服务查询很多公司内部都会有一个邮箱服务器,这种邮箱服务器大部分是不会做CDN的。因为邮箱服务器一般都是公司内部人去访问,所以大部分不做CDN。因此,我们就可以根据对方邮件服务器给我们发送的邮件,来判断对方的IP地址
-
- 以Steam为例,这个可能是真实IP
- 百度查询IP
-
- 所以基本可以确定【208.64.200.236】为 真实ip
- 国外地址查询
有些网站为了节省成本,不会把CDN部署在国外。假设现在你自己的网络公司有一个网站,但你的客户群体主要是在国内,因为国外用户不多,所以就不值得在国外搭建CDN,因此这样从国外访问国内的网站就很可能直接访问的就是主站的真实ip地址。
全球 CDN 服务商查询_专业的 IP 地址库_IPIP.NET
- 遗留文件,扫描全网
-
- 一些站点在搭建之初,会用一些文件测试站点,例如“phpinfo()”文件,此类文件里就有可能包含了真实的IP地址。可以利用Google搜索引擎搜索关键字“site:xxx.com inurl:phpinfo.php”,搜索站点是否有遗留文件
- 扫描工具:fuckcdn,zmap等
- 黑暗引擎搜索特定文件
-
- google,shodan,zoomeye,fofa等
这里的特定文件,指的是站点的icon文件,也就是网站的图标,一般查看网页源代码可以找到,格式大致“http://www.xx.com/favicon.ico”。在shodan搜索网站icon图标的语法为:http.favicon.hash:hash值,hash是一个未知的随机数,我们可以通过shodan语法来查看一个已经被shodan收录的网站的hash值,来进一步获取到所有带有某icon的网站。 - 获取icon的hash值
- google,shodan,zoomeye,fofa等
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值
- DNS历史记录,以量打量
站点在使用CDN服务之前,它的真实IP地址可能被DNS服务器所记录到,此时我们就可以通过DNS历史记录找到目标真实IP。而“以量打量”就是常说的ddos攻击或者说是流量耗尽攻击,在网上开CDN的时候,都会分地区流量,就比如这个节点有100M流量,当这流量用完后,用户再访问就会访问网站真实的ip地址。
情报社区:
https://x.threatbook.cnDNSdb
DNSDB
真实案例
真实应用-CDN绕过-漏洞&遗留文件
例如phpinfo.php 这个文件,他会泄露服务器本地的IP地址(如果有内网地址的话,会泄露内网地址)
漏洞:
例如ssrf漏洞 47.94.236.117 开了一个web服务 记录日志
www.yansiqi.com ssrf漏洞(会接受用户的数据并利用服务器去请求)
真实应用-CDN绕过-子域名查询操作
-
- 为什么要进行子域名查询?
因为搭建CDN要花钱,所以管理员会对主站,访问量比较大的做cdn服务,但是不会对子站做cdn,这时候就可以通过查找子域名来查找网站的真实IP,一般情况下,子站跟主站在同一个C段内 - 例如管理员在CDN设置的时候并没有设置成*.sp910.com 而是只对某个子域名进行CDN。那么我们可以通过多地ping子域名,来获取真实ip。
- 为什么要进行子域名查询?
真实应用-CDN绕过-接口查询国外访问
有些网站的搭建者不会去考虑那些比较偏远,网络不是发达的国家开启CDN,所以我们可以从这方面入手,用国外的接口去ping 目标
真实应用-CDN绕过-主动邮件配合备案
很多站点都有发送邮件sendmail的功能,如Rss邮件订阅等。而且一般的邮件系统很多都是在内部,没有经过CDN的解析。可在邮件源码里面就会包含服务器的真实 IP。
这里墨者的邮箱原文就会显示出服务器的真实IP。