被动信息收集----CDN识别

一、CDN介绍

1.CND简介
CDN(Content Delivery Network 或 Content Distribution Network)即内容分发网络,这种模式专注于通过全球分布式缓存架构为经常访问的文件减少网络访问时的延迟。目标是加快交付应用程序内容给用户。这些内容是任何可以存储在一个文件中的东西,如图像、 视频和文档。内容交付网络(CSN)是一种全球分布式缓存的服务。CDN 在世界各地的许多地方保存了应用程序文件的副本。当用户访问时,会选择离这些地方接近结点,用户访问的内容不需要通过很长距离的网络来传递,所以它能访问到达速度更快,以此来提高用户体验感。CDN 节点设在世界各地希望尽可以能接近的用户。它有自己的 URL 负载平衡解析器,根据用户不同地理位置,无论用户在什么地方将用户引向最近的节点。

2.为什么检测CDN
因为在一般情况下,目标服务器可能只有一个服务器,那么如果通过这个域名来确定目标服务器的真实IP真的很重要。 比如,一个网站的服务器在北京,并且该网站存在很多CDN,此时,你在上海测试该网站,如果不考虑CDN,那么你可能测试的就不是目标服务器,而是距离你最近的CDN服务器,这样就导致你无法直接得到目标主机的真实IP段范围。

二、CDN工作原理

传统网站请求响应过程

(1):用户在自己的浏览器中输入要访问的网站域名
(2):浏览器向本地DNS服务器请求对该域名的解析
(3):本地DNS服务器中的缓存中如果有这个域名的解析结果,则直接响应用户的解析请求
(4):本地DNS服务器中如果没有关于这个域名的解析结果,则以迭代方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
(5):浏览器获得域名解析结果,就是该域名相应设备的IP地址
(6):浏览器获取IP地址之后,通过标准的TCP握手流程,建立TCP连接
(7):浏览器向服务器发起HTTP请求
(8):服务器将用户请求内容传给浏览器
(9):传输完成后,经过标准的TCP挥手流程,断开TCP连接

引入CDN之后的网站请求响应过程

(1):当用户点击网站页面上的内容URL,先经过本地DNS解析,如果本地DNS系统没有相应域名的缓存,则本地DNS系统会将域名解析权交给CNAME指向的CDN专用DNS服务器
(2):CDN的DNS服务器将CDN的全局负载均衡设备的IP地址返回给用户
(3):用户向CDN的全局负载均衡设备发起URL访问请求
(4):CDN全局负载均衡设备根据用户IP地址,以及用户请求的URL,选择一台用户所属区域的区域负载均衡设备,并将请求转发到此设备上
(5):基于以下这些条件的综合分析之后,区域负载均衡设备会选择一个最优的缓存服务器节点,并从缓存服务器节点处获得缓存服务器的IP地址,最终将得到的IP地址返回给全局负载均衡设备
(6):区域负载均衡设备根据用户IP地址,判断哪一个边缘节点距用户最近
(7):区域负载均衡设备根据用户所请求的URL中携带的内容名称,判断哪一个节点上有用户所需内容
(8):区域负载均衡设备查询边缘节点当前的负载情况,判断哪一个边缘节点尚有能力
(9):全局负载均衡设备把服务器的IP地址返回给用户
(10):用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需的内容传到用户终端。如果这台缓存服务器上并没有用户需要的内容,那么这台服务器就要向上一级缓存服务器请求内容,直至找到需要的内容为止

三、判断目标是否使用CDN

1.使用ping命令
被动信息收集----CDN识别_第1张图片
像上述这样的就存在CDN,因为没有使用真正的域名进行解析。

2.使用在线网站
可以使用17CE(http://www.17ce.com)进行全国各地区的ping操作,然后对比每个地区出来的IP结构,查看这些IP是否一致,如果一致则表明可能没有CDN,否则可能存在CDN。
被动信息收集----CDN识别_第2张图片
上图中不同地区查询的IP不同,说明可能存在CDN

四、绕过CDN查找真实IP

1.内部邮箱源
一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件、寻找邮件头中的服务器域名IP,ping这个邮件服务器的域名,就可以获取到目标的真实IP(必须是目标服务器自己的邮件服务器,第三方或者公共邮件服务器是没有用的)

2.扫描网站测试文件
通过扫描网站测试文件,如phpinfo、test等,从而找到目标的真实IP

3.分站域名
很多网站的主站访问量会很大,所以主站都是挂CDN的,但是分站可能没有挂CDN,可以通过ping二级域名获取分组IP,可能会出现分站和不是同一个IP但在同一个C段下面的情况,从而能判断出目标的真实IP段

4.国外访问
国内的CDN往往只对国内的用户的访问加速,而国外的CDN就不一定了,因此可以通过代理网站App Synthetic Monitor(https://asm.ca.com/en/ping.php)访问,得到真实的IP

5.查询域名解析记录
有时候可能目标主机才刚开始使用CDN,因此可以通过查看域名IP历史记录来判断目标主机的真实IP

6.通过抓包进行分析
如果目标主机有自己的App,可以通过Fiddler或Burp Suite抓取App的请求,从里面找到真实的IP

7.绕过CloudFlare CDN查找真实IP
现在很多网站使用CloudFlare提供的CDN服务,在确定了网站使用了CDN后,可以通过在线网站CloudFlareWatch对CloudFlare客户网站进行真实IP查询

你可能感兴趣的:(渗透测试技术)