目录
前言
CDN(Content Delivery Network)即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在CDN服务,将会影响到后续的安全测试过程。
如何判断目标存在CDN服务
判断CDN的简单方式:超级ping多个地点Ping服务器,网站测速 - 站长工具
一个网址多个IP就是开启了CDN服务。
CDN对于安全测试的影响
目前常见的CDN绕过技术
- 子域名查询:多级域名。二级域名有可能和主站呈现以下三种关系:同IP;不同IP同网段(企业、学校常用);不同IP不同网段。从经济的角度出发,一般会对主站提供CDN服务,但不会对子域名、附站架设CDN服务。可以通过二、三级域名推断主站真实IP地址范围。
- 邮件服务查询:很多公司、企业、学校内部会有邮件服务器,自己的邮箱地址,此邮箱服务器大多数不会架设CDN服务器,因为并没有必要。仅供内部人访问。邮箱服务器给个人发送邮件的时候肯定是从真实IP发出,因为个人邮箱地址不可能有CDN服务(正向、反向的问题)。
- 国外地址请求:从经济角度出发,国内的网站一般不会到国外架设CDN服务,只会针对客户群体地区提供CDN服务。有时从国外(以国外IP)访问就能得知真实主站IP。
- 遗留文件:原理和邮件查询类似。遗留文件类似于phpinfo.php,内含当前PHP脚本相关环境配置,有IP地址字段,就很有可能是真实源站。
- 扫描全网:以上手段都没用的时候,是一个没办法的办法,借助软件、工具、平台等资源进行扫描,把全世界的网路对目标网站进行访问,对返回的IP地址进行收集,再分析哪一个可能是真实IP。因为:不是每个地方都有CDN;真实IP一定在收集到的所有IP里,因为穷尽资源一定有临近源站的IP,源站直接回复。
- 黑暗引擎搜索特定文件:钟馗之眼,ShodanShodan Search Engine、fofahttps://fofa.info/、特定文件:文件的哈希值、MD5值,网站图标文件ico文件
- DNS历史记录,以量打量:查找网站没有架设CDN服务之前的IP地址。以量打量就是DDoS攻击,CDN根据地区流量付费(流量耗尽攻击)耗干CDN当前可供访问的流量之后,就只能由源站响应。
CDN真实IP地址获取及绑定指向地址
更改本地HOSTS解析指向文件
演示案例
1. 利用子域名请求获取真实IP
*号表示所有。虽然加与不加www,访问得到的网页是一样的,但其实需要两条设置。
通常情况下,CDN只设置了www而不是*,不以www访问就可以绕过CDN。
通常网站管理员将两个地址解析至同一IP,但搭建CDN服务时候,可能存在网站管理员只将其中一个设置解析至CDN服务器的情况,也就是说:两种访问方式访问的IP可能并不相同。
使用超级Ping,xueersi.com和www.xueersi.com返回的IP地址不一样,暴露主站IP。
2. 利用国外地址请求获取真实IP
m.sp910.com 域名前加m.是手机版。可以从m.访问做测试。(类似子域名)
用国外地址访问时最好避开主流国家,因为有可能在这些国家架设了CDN。如果要用国外地址访问,最好用冷门国家。花钱买节点(全局模式)……换节点后可见访问相同网址IP不同:
3. 利用第三方接口查询获取真实IP
参考
4. 利用邮件服务器接口获取真实IP
mozhe.cn利用超级ping无法获取真实IP地址。考虑使用邮件源码测试对比第三方查询。
查看邮件源码:Received 字段获悉网站IP地址。再去第三方查询、对比。
查询IP归属地,结合网站底部备案号确定IP真实性:
如何进一步确定当前获取的IP地址的真实性:修改本地HOST文件。
保存,重启浏览器,访问域名。如果可以正常访问说明已获取真实源站IP!
5. 利用黑暗引擎搜索特定文件获取真实IP
Shodan搜索文件哈希值。(钟馗之眼、fofa)
计算网站ico文件哈希值的Python代码:
#Eython2开发别搞错了执行环境 #安装mmh3失败记得先安装下这个 #Microsoft visual C++ 14.0 #https://pan.baidu.com/s/12TcEkz6KFLhofCT-osJosg 提取码: wkgv 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的搜索语法。拿获取到的哈希值去Shodan搜索即可。
补充工具
fuckcdn,w8fuckcdn,zmap全网扫描工具,基于python,扫描满足配置且开80端口的。
扫描完的结果还是需要人工判定。工具不一定准。