#什么是CDN?
内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。
CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。
简单来说,CDN使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中速率。
归纳起来,CDN具有以下主要功能:
(1)节省骨干网带宽,减少带宽需求量;
(2)提供服务器端加速,解决由于用户访问量大造成的服务器过载问题;
(3)服务商能使用Web Cache技术在本地缓存用户访问过的Web页面和对象,实现相同对象的访问无须占用主干的出口带宽,并提高用户访问因特网页面的相应时间的需求;
(4)能克服网站分布不均的问题,并且能降低网站自身建设和维护成本;
(5)降低“通信风暴”的影响,提高网络访问的稳定性。
#如何判断是否存在CDN
1.直接ping
两者不同时,则判断存在cdn。两者相同时则不存在CDN。
2.利用多节点技术进行请求判断
例如超级ping,返回多个IP值时则存在CDN。返回单一IP则不存在CDN。
#绕过CDN的方法
1.子域名查询以获得真真实ip
有些子域名和域名可能部署在同一台服务器上,推测子域名的ip可能为目标网站的ip
网上有很多子域名查询工具或平台
比如:https://dnsdb.io/zh-cn/
2.利用网站漏洞
一些网站可能有phpin铭感信息泄露、Apache status和Jboss status敏感信息泄露、网页源代码泄露、svn信息泄露信、github信息泄露等。若存在web漏洞,服务器主动与我们发起请求连接,我们也能获取目标站点真实ip。例如xss、ssrf、命令执行反弹shell等。
比如phpinfo,利用自己搭建的进行测试:
3.利用邮件查询服务
需要下载一个邮件服务软件,比如foxmail,下载链接:https://www.foxmail.com/
一些网站在注册新用户时,可使用邮件注册,可推测邮件服务器与网站在同一台服务器或同一网段下。
利用注册时查看邮件源码可获得邮件服务器的真实ip进而推测网站的真实ip地址。
Received项就是邮件服务器的地址。
4.利用国外地址请求
一些网站在其他国家没有设置CDN节点,所以在国外访问网站时时直接访问源站从而获取真实ip。
可使用vpn切换国外节点进行访问、ping、nslookup等直接获取ip。
5.利用第三方接口查询真实ip
例如国外接口:
get-site-ip.com
asm.ca.com
国内:情报社区
x.threatbook.cn
6.利用黑暗引擎搜索特定文件获取真实IP。
常用三大搜索引擎:
shodan:https://www.shodan.io/
钟馗之眼:https://www.zoomeye.org/
fofa:https://fofa.so/
例如一些文件的ico文件是特定的,可以利用该文件的哈希值在搜索引擎进行搜索。
获取文件的文件hash值的方法有很多。
命令行:
Get-FileHash + 文件名
或者python代码查看ico文件的hash(环境python2):
import mmh3
import requests
response = requests.get('文件url')
favicon = response.content.encode('base64')
hash = mmh3.hash(favicon)
print('http.favicon.hash:'+str(hash))
获取hash后再利用shodan搜索
http.favicon.hash:'hash'
7.扫全网
通过Zmap、masscan、fuckcdn、w8fuckcdn等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实IP。
fuckcdn:https://github.com/Tai7sy/fuckcdn
w8fuckcdn:https://github.com/boy-hack/w8fuckcdn
fuckcdn使用方法:
打开set.ini配置文件,按照说明进行配置即可
配置完成后运行.exe文件即可。
其他工具步骤大致一样,不再一一演示。
8.一点小技巧
一些网站可能加www.和不加www.返回的ip可能不同,cdn节点可能部署在www.的网站上。真实ip可能是不加的那个。
一些网站可能会做手机端,其格式为m.,往往这个就没有设置cdn,可获取真实ip。
通过综合手无法判断时,可查看网站备案号地址,再结合扫描出的ip地区地址进行比较获得真实ip地址。