信息收集-CDN 绕过技术

CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。

QQ截图20211116145635.png

如何判断目标存在 CDN 服务

利用多节点技术进行请求返回判断,一般网站服务器只会拥有少量的ip,通过多节点访问获得的大量的ip,那么就存在cdn服务

QQ截图20211116150026.png

  • 可以利用ping命令和nslookup命令,无cdn会直接显示解析的域名以及地址,有cdn会显示cdn的域名及地址
  • 一般情况下cdn的部署是利用域名的cname记录,所以bilibili的ping命令结果显示的域名就是cdn的域名

QQ截图20211116150453.png

QQ截图20211116150459.png

QQ截图20211116150509.png

目前常见的 CDN 绕过技术有哪些

子域名查询,dns历史记录查询

一般情况下,网站管理者不一定会对一个域名下的所有子域名都部署cdn,但是可能会把所有网站部署在同一个ip下,这样可以通过其他的子域名,来查询到ip

  • 举个例子,如果访问www.baidu.com遇到了cdn,但是这时候可以通过子域名查询的手段获取到其他子域名,访问tieba.baidu.com的时候就可能会直接获取到ip,具体查看以下案例

QQ截图20211116155238.png

QQ截图20211116155255.png

  • 子域名可以通过一些网站进行查询,也可以通过字典进行爆破
  • 在国内的域名配置中,默认的情况下,域名会默认解析到服务器ip,比如www.baidu.combaidu.com,前者是设定的ip,也是cdn部署的ip,而后者会在创建域名解析时默认解析到服务器ip,尝试解析后者的ip有可能获取到真实的服务器ip
  • https://crt.sh/查询子域名,原理是根据ssl证书申请来确认子域名
  • https://dnsdb.io/全球DNS搜索引擎
  • https://dnsdumpster.com/查询子域名,如果访问到了真实ip的服务器,还会扫描出服务器开放的端口服务的版本
  • https://x.threatbook.cn/查询域名的历史解析记录以及备案信息
  • https://securitytrails.com查询域名的历史解析记录
  • https://tools.ipip.net/cdn.php可以利用国外cdn进行ping操作,发现真实ip
  • https://www.get-site-ip.com/直接查询域名的ip,效果不是很好

邮件服务查询

当网站发送邮件时,会从服务器直接发出,如果有些网站拥有邮件验证的过程,可以通过查看邮件原文来获取发送邮件的ip,再根据该ip进行验证

  • steam的邮件中通过原文查看到了ip地址,再通过验证,进一步确认是否为服务器的ip地址

QQ截图20211116154110.png

QQ截图20211116154232.png

国外地址请求

如果网站服务于国内,那么cdn都会部署在国内,通过国外的ip地址请求网站时,就不会经过cdn,但是有些国外的地址也可能经过国内的cdn,推荐尝试冷门的国家来访问

QQ截图20211116155936.png

黑暗引擎搜索特定文件

访问网站,找到ico图标文件的路径,计算出该文件的hash值,去shodan查询,获取到一个ip地址

#Python2 开发别搞错了执行环境
#安装 mmh3 失败记得先安装下这个#Microsoft Visual C++ 14.0
import mmh3
import requests

response = requests.get('https://v23gg.com/img/favicon.ico')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print 'http.favicon.hash:'+str(hash)

QQ截图20211116160950.png

QQ截图20211116161052.png