CDN绕过技术总汇

发布于:2025-03-14 ⋅ 阅读:(16) ⋅ 点赞:(0)

“如何绕过CDN找到目标的真实IP”是HVV培训及面试的经典问题。这个问题由来已久,堪称网络安全领域的“老生常谈”。网上虽然不乏相关教程,但内容往往零散或不够全面。今天,我们将系统梳理CDN绕过的各种方法,力求“深入浅出”,为大家带来一场知识的盛宴。


CDN 基础知识

定义

内容分发网络(英语:Content Delivery Network或Content Distribution Network,缩写:CDN)是一种通过互联网互联的分布式服务器系统。它利用地理位置靠近用户的服务器,将音乐、图片、视频、应用程序等内容快速、可靠地传递给用户,从而提升网络性能、可扩展性和成本效益。

简单来说,CDN的核心是通过缓存技术,解决源站内容如何高效分发至用户的问题。用户访问数据时,无需直接连接源站,而是通过CDN节点获取最近、最优的缓存内容。这不仅加速了访问体验,还通过负载均衡大幅减轻了源站的压力。

CDN的工作流程

  1. 用户在浏览器输入域名,发起请求,首先由本地DNS服务器解析域名。
  2. DNS通过CNAME记录将解析权交给CDN专属的DNS服务器。
  3. CDN的DNS返回一个优选IP,客户端据此访问CDN的负载均衡设备。
  4. 负载均衡设备根据流量状况、用户位置和内容需求,分配最佳的缓存服务器IP。
  5. 客户端最终连接该IP,从CDN缓存服务器获取内容。

CDN的优点

CDN的广泛应用离不开其显著优势:

  1. 减轻源站压力:分担访问流量,避免源站过载。
  2. 解决互联互通问题:跨越运营商网络瓶颈,提升跨网访问速度。
  3. 应对突发流量:如促销活动或热点事件,确保网站稳定运行。
  4. 优化资源利用:合理分配带宽和服务器资源。
  5. 预防单点故障:多节点部署提升系统容错能力。
  6. 提升用户体验:降低延迟,提供更快的加载速度。
  7. 数据统计支持:提供访问量、流量分布等详细分析。
  8. 增强安全性:有效抵御DDoS攻击,保护源站。

……

CDN的适用场景

CDN主要服务于以内容分发为主、具有一定访问量的网站,包括但不限于:

  • 静态内容:如HTML、JS、CSS、图片(图床等)。
  • 视音频与大文件下载:如B站、腾讯视频、百度网盘、蓝奏云。
  • 视频直播加速:如斗鱼、淘宝直播、虎牙。
  • 移动应用加速:APP内的图片、短视频、UGC内容,以及小程序等。

以直播为例,几乎所有直播平台都离不开CDN。因为当大量用户同时涌入时,没有哪家平台的源站能直接承受如此巨大的流量压力。CDN通过缓存直播流,用户从就近节点观看内容,这也是直播延迟难以完全消除的原因之一。


如何判断目标是否使用了CDN?

在绕过CDN之前,我们需要确认目标是否真的部署了CDN。以下是几种实用方法:

方法一:多站点Ping检测

CDN会根据用户地理位置分配不同的节点,因此在不同地区Ping目标域名可能返回不同的IP。操作很简单:

方法二:nslookup查询

通过nslookup检查域名解析结果。如果返回多个IP地址,通常说明启用了CDN。例如:

  • 有CDN的情况
    > ctfking.com
    服务器: public1.alidns.com
    Address: 223.5.5.5
    非权威应答:
    名称: d831e3eec87f7d3c02a6-mini-l2.qcloudzygj.com
    Addresses: 106.55.85.170
              106.55.85.167
              106.55.86.71
    Aliases: ctfking.com
    
  • 无CDN的情况
    > nbufe.edu.cn
    服务器: public1.alidns.com
    Address: 223.5.5.5
    名称: nbufe.edu.cn
    Address: 单一IP
    

方法三:专用工具

使用在线工具快速检测,如:

  • CDN Finder:输入域名即可判断是否使用CDN。

如何绕过CDN找到真实IP?

确认目标使用了CDN后,接下来就是重头戏——如何绕过它,找到隐藏的真实源站IP。以下是12种经过实践验证的方法:

方法一:查询DNS解析记录

1.查看IP与域名绑定的历史记录。使用 CDN 之前可能有记录。相关查询网站为:

Dnsdb

微步在线

Netcraft

IPIP(没错又是这个网站,它太猛了)

2.借助Securitytrails平台(https://securitytrails.com/)

攻击者可以查明真实的原始IP。他们只需在搜索字段中输入站点域名并按 ENTER,即可在左侧菜单中找到“历史数据”。

如何找到隐藏在 CloudFlare 或 Tor 背后的真实原始 IP?

除了过去的 DNS 记录,即使是当前的记录也可能泄露原始服务器 IP。例如,MX 记录是查找 IP 的常用方法。如果网站在与 Web 相同的服务器和 IP 上托管自己的邮件服务器,则原始服务器 IP 将在 MX 记录中。

方法二:查询子域名

毕竟CDN还是不便宜,所以很多站长可能只会在主站或者流量大的子站做一个CDN,而很多小站子站跟主站在同一个服务器或者同C段,此时可以通过子域对应的IP查询,帮助找到真实IP站点。

微步在线

上面提到的微步在线功能强大,黑客只需输入域名即可查找(如baidu.com),点击子域选项即可找到其子域,但免费用户每月只有5次免费查询机会。

Dnsdb

黑客只需要输入baidu.com TYPE:A就可以收集到百度的子域名和IP。

Google

谷歌站点:baidu.com-www 可以看到除WWW以外的子域

子域扫描器

Layer子域名挖掘机和lijiejie的subdomain那个工具都很不错

推荐长亭的xray

方法三:网络空间引擎

fofa、鹰图、Zoomeye、shodan、360

推荐鹰图

只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出收录的有这些关键字的ip域名,很多时候能获取网站的真实ip

方法四:使用SSL证书寻找真实原IP

如果您在 xyz123boot.com 上托管服务,则原始服务器 IP 为 136.23.63.44。CloudFlare 将为您提供 DDoS 防护、Web 应用防火墙和其他一些安全服务,以保护您的服务免受攻击。为此,您的 Web 服务器必须支持 SSL 并具有证书。此时,CloudFlare 与您的服务器之间的通信,就像您与 CloudFlare 之间的通信一样,将被加密(即没有灵活的 SSL)。这看起来很安全,但问题是当你直接连接到443端口(https://136.23.63.44:443)上的IP时,会暴露SSL证书。

此时,如果攻击者扫描0.0.0.0/0,整个互联网,就可以在xyz123boot.com的443端口获取有效证书,进而获取提供给你的web服务器IP。

目前,Censys 工具可以扫描整个互联网。Censys 是用于搜索联网设备信息的新搜索引擎。安全专家可以使用它来评估其实施的安全性,黑客可以使用它作为初步调查。攻击目标和收集目标信息的强大武器。Censys 搜索引擎可以扫描整个互联网。Censys每天扫描IPv4地址空间,搜索所有联网设备并收集相关信息,并返回资源(如设备、网站、证书等)配置和部署的整体报告。

攻击者唯一需要做的就是将上述搜索词转换为实际的搜索查询参数。

xyz123boot.com证书的搜索查询参数为:parsed.names: xyz123boot.com

只显示有效证书的查询参数为:tags.raw:trusted

攻击者可以在 Censys 上实现多个参数的组合,这可以通过使用简单的布尔逻辑来完成。

组合的搜索参数是:parsed.names:xyz123boot.com 和 tags.raw:trusted

Censys 将向您显示在扫描中找到的符合上述搜索条件的所有标准证书。

要一一查看这些搜索结果,攻击者可以通过单击右侧的“探索”来打开一个包含多个工具的下拉菜单。什么在使用这个证书?> IPv4 主机

使用给定的 SSL 证书

如果您是执法人员,并且想找到隐藏在 cheesecp5vaogohv.onion 下的儿童色情网站。最好的办法是找到它的原始IP,这样就可以追踪它的托管服务器,甚至可以找出它背后的运营商和财务线索。

隐藏服务具有 SSL 证书。要查找它使用的 IPv4 主机,只需将“SHA1 指纹”(签名证书的 sha1 值)粘贴到 Censys IPv4 主机搜索中即可找到证书。这种方法很容易找到配置错误的Web服务器。

方法五:使用HTTP头找到真正的原始IP

借助 SecurityTrails 这样的平台,任何人都可以在海量的大数据中搜索自己的目标,甚至可以通过比较 HTTP 标头找到原始服务器。

特别是当用户有一个非常特殊的服务器名称和软件名称时,攻击者更容易找到你。

如果要搜索的数据很多,如上所述,攻击者可以在 Censys 上组合搜索参数。假设您正在与 1500 个 Web 服务器共享您的服务器 HTTP 标头,所有这些服务器都发送相同的标头参数和值组合。而且您还使用新的 PHP 框架来发送唯一的 HTTP 标头(例如:X-Generated-Via: XYZ 框架),目前约有 400 位网站管理员使用该框架。最终,在三台服务器的交汇处,通过人工操作即可找到IP,整个过程仅需几秒。

例如,Censys上用于匹配服务器头的搜索参数为80.http.get.headers.server:,查找CloudFlare服务的网站的参数如下:

80.http.get.headers.server:cloudflare

方法六:利用网站返回的内容寻找真实的原IP

如果原服务器IP也返回网站内容,可以在网上搜索很多相关资料。

浏览网站源代码以查找独特的代码片段。在 JavaScript 中使用具有访问权限或标识符参数的第三方服务(例如 Google Analytics、reCAPTCHA)是攻击者经常使用的一种方法。

以下是从 HackTheBox 网站获得的 Google Analytics 跟踪代码示例:

ga(‘创建’,‘UA-93577176-1’,‘auto’); 80.http.get.body 可以使用:参数通过body/source过滤Censys数据。不幸的是,普通搜索字段有局限性。但是您可以在 Censys 请求研究访问权限,这使您可以通过 Google BigQuery 进行更强大的查询。

Shodan 是一个类似于 Censys 的服务,同样提供 http.html 搜索参数。

搜索示例:https://www.shodan.io/search?query=http.html%3AUA-32023260-1

方法七:使用外地主机解析域名

国内很多CDN厂商因为各种原因只做国内线,国外线路可能几乎没有。这时候我们可能会使用外地主机直接访问真实IP。

方法八:网站漏洞搜索

  1. 目标敏感文件泄露,如phpinfo、GitHub信息泄露等探针
  2. XSS盲打、命令执行反向shell、SSRF等
  3. 无论是社会工程还是其他手段,目标网站获取CDN中的管理员账号,在CDN的配置中可以找到网站的真实IP。

方法九:网站邮件订阅搜索

RSS邮件订阅,很多网站都有自己的sendmail,会发邮件给我们。此时,服务器的真实IP将包含在邮件的源代码中。

方法十:用Zmap扫描全网

要找到xiaix.me网站的真实IP,我们首先从apnic获取IP段,然后使用Zmap的banner-grab扫描出开放80端口的主机进行banner抓包,最后在Host中写入xiaix.me http请求。

方法十一:F5 LTM解码方法

服务器使用F5 LTM进行负载均衡时,也可以通过set-cookie关键字解码得到真实ip,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,第一个小数部分的十进制数是487098378取出来,然后转换成十六进制数1d08880a,然后从后往前,取出四位数字,就是0a.88.08.1d,最后再转换成十进制数10.136.8.29,也是最后一个真实IP。

方法十二:网页敏感信息

这条思路来源于Jacko

favicon哈希值

根据网站图标哈希值搜索IP

python2脚本

1import mmh3 2import requests 3response = requests.get('https://example.com/favicon.ico') 4favicon = response.content.encode('base64') 5hash = mmh3.hash(favicon) 6print 'http.favicon.hash:'+str(hash)

去fofa或者shodan上搜索该哈希值

查询格式:

  • fofa:icon_hash="xxx"
  • shodan:http.favicon.hash:xxx
HTML源代码检索查找IP

根据网站页面HTML中特有的字符串去搜索引擎中搜索,如目标页面中由HTML标签为<title>的字段比较特殊,那么可以去FOFA中搜索:

搜索到的结果会显示IP,访问该IP,若能够正常访问则为真正IP,如果打不开则为CDN或虚拟主机服务器


总结

绕过CDN是一门技术活,涉及DNS、子域、证书、头信息等多方面技巧。每种方法都有适用场景,实际操作中往往需要灵活组合。希望这篇文章能为您提供清晰的思路和实用的工具,助您在网络安全路上更进一步!