1. 什么是CDN
在渗透测试过程中,经常会碰到网站有CDN的情况。CDN即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说的简单点,就是一组在不同运营商之间的对接点上的高速缓存服务器,把用户经常访问的静态数据资源直接缓存到节点服务器上,当用户再次请求时,会直接分发到离用户近的节点服务器上响应给用户,当用户有实际数据交互时才会从远程Web服务器上响应,这样可以大大提高网站的响应速度及用户体验。
2. CDN的优势
- 提高用户访问速率,优化用户使用体验。
- 隐藏真实服务器的IP
- 提供WAF功能,目前很多CDN也提供了WAF的功能,我们的访问请求会先经过CDN节点的过滤,该过滤可对SQL注入、XSS、Webshell上传、命令注入、恶意扫描等攻击行为进行有效检测和拦截。CDN节点将认为无害的数据提交给真实的主机服务器。
3. 几种访问方式的不同
- 传统访问:用户访问域名-->解析服务器IP-->访问目标主机
- 普通CDN:用户访问域名-->CDN节点-->真实服务器IP-->访问目标主机
- 带WAF的CDN:用户访问域名-->CDN节点(云WAF)-->真实服务器IP-->访问目标主机
4. CDN配置
- 将域名的 NS 记录指向 CDN 厂商提供的 DNS 服务器。
- 给域名设置一个 CNAME 记录,将它指向CDN厂商提供的另一个域名。
5. 区别
没有CDN | 有CDN |
|
|
所以在渗透测试中,为了要知道网站服务器的真实IP,我们必须绕过CDN查找出网站的真实ip地址
6. 实现流程
1. 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
2. LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
3. 当授权DNS解析www.a.com时,返回域名CNAME
www.a.tbcdn.com对应IP地址。
4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点
IP地址。
5. LDNS获取DNS返回的解析IP地址。
6. 用户获取解析IP地址。
7. 用户向获取的IP地址发起对该资源的访问请求。
7. 判断目标网站有没有使用CDN
- 使用nslookup来判断目标网站有没有使用CDN
如果给了两个以上的地址应答说明使用了CDN服务
- SearchMap判断目标有没有使用CDN
searchmap是一款集域名解析、IP反查域名、WHOIS查询、CDN检测、端口扫描、目录扫描、子域名挖掘为一体的前渗透测试综合信息收集工具
- 下载地址:
git clone GitCode - 全球开发者的开源社区,开源代码托管平台 - 下载好SearchMap后使用以下命令安装依赖:
python3 -m pip install -r requirements.txt
- 获取网站基本信息
python3 searchmap.py -u 百度一下,你就知道
- 使用nmap进行隐式端口扫描
python3 searchmap.py -u 百度一下,你就知道 -p
- 其他CDN指纹识别工具
常用手段:
ping
nslookup
超级ping
Kali ldb工具
专业工具:
国内:http://cdn.chinaz.com/
国外:https://www.cdnplanet.com/tools/cdnfinder/
8. 获取CDN背后真实的IP
- 超级ping
- 历史DNS
- 通过子域名查询IP
- 国外主机解析
- 超级ping
网址:https://ping.chinaz.com
如图显示出了很多节点,由此可以判别出使用了CDN
- 国外网址
国内的CDN往往只对国内用户的访问加速,而国外的CDN就不一定了。因此,通过国外在线代理网站访问 ,可能会得到真实的ip地址。
https://asm.ca.com/zh_cn/ping.php
http://host-tracker.com/
http://www.webpagetest.org/
https://dnscheck.pingdom.com/
- shodan网络空间搜索引擎
https://www.shodan.io/
- 鹰图网络空间搜索引擎
https://hunter.qianxin.com/