CDN绕过
CDN 的全称是 Content Delivery Network,即内容分发网络。
CDN 是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在 CDN 服务,将会影响到后续的安全测试过程。
如果有CDN,我们访问的可能不是源站,只是缓存的站点。
如何判断目标站点是否存在CDN?
利用多节点技术进行请求返回判断
超级ping
使用超级ping进行查询
无CDN的情况:
监察结果的响应ip都是同一个
有CDN 的情况:
监察结果的响应ip有多个
nslookup
使用windows命令 nslookup 进行查询
无CDN
有CDN :会有多个地址
常见CDN 绕过技术
子域名查询
为什么要进行子域名查询?
搭建CDN要花钱,一般管理员会对主站,访问量比较大的搭建cdn服务,但是不会对子站做cdn,这时候就可以通过查找子域名来查找网站的真实IP。
比如
abc.com 192.168.11.11
www.abc.com 192.168.11.11
news.abc.com 192.168.11.11 或者 192.168.11.1-254,或不在同一网段(查询子域名无意义)
大家一般访问网站都会使用 www.abc.com 这样的形式进行访问,所以访问量会比较多,可能就会对www.abc.com 搭建cdn ,而 abc.com可能就没搭建 cdn,映射的ip可能就是真是ip。
邮件服务查询
很多公司内部都会有一个邮箱服务器,这种邮箱服务器大部分是不会做CDN的。因为邮箱服务器一般都是公司内部人去访问,所以不做CDN。因此,我们就可以根据对方邮件服务器给我们发送的邮件,来判断对方的IP地址
以安鸾渗透实战平台为例:
国外地址查询
有些网站为了节省成本,不会把CDN部署在国外,或者只在客户群体比较多的一些国家进行部署,客户群体少的就没有,不值得搭建CDN,因此这样从国外访问国内的网站就很可能直接访问的就是主站的真实ip地址。(尽量找比较偏僻的国家,或者说就是客户群体很少的国家,进行访问)
全球 CDN 服务商查询_专业的 IP 地址库_IPIP.NET
黑暗引擎搜索特定文件
google,shodan,zoomeye,fofa等
这里的特定文件,指的是站点的icon文件,也就是网站的图标,一般查看网页源代码可以找到,格式大致“http://www.xx.com/favicon.ico”。在shodan搜索网站icon图标的语法为:http.favicon.hash:hash值,hash是一个未知的随机数,我们可以通过shodan语法来查看一个已经被shodan收录的网站的hash值,来进一步获取到所有带有某icon的网站。
shodan的语法:http.favicon.hash:hash值
获取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)
遗留文件,扫描全网
一些站点在搭建之初,会用一些文件测试站点,例如“phpinfo()”文件,此类文件里就有可能包含了真实的IP地址。可以利用Google搜索引擎搜索关键字“site:xxx.com inurl:phpinfo.php”,搜索站点是否有遗留文件
遗留文件中的一些参数信息,可能就是真实ip。
如:
扫描全网,一般是常规方法无效时,迫于无奈的办法!
扫描工具:fuckcdn,zmap等
(采用工具扫描耗时久,且对电脑读取性能要求较高,故不推荐采用此方式)
DNS历史记录,以量打量
站点在使用CDN服务之前,它的真实IP地址可能被DNS服务器所记录到,此时我们就可以通过DNS历史记录找到目标真实IP。
以量打量,就是常说的ddos攻击或者说是流量耗尽攻击,在网上开CDN的时候,都会分地区流量,就比如这个节点有1G流量,当这流量用完后,用户再访问就会访问网站真实的ip地址。