CDN绕过技术

一、CDN 简介

  • 内容分发网络是指一种透过互联网互相连接的电脑网络系统。
    • 利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户。
    • 用来提供高性能、可扩展性及低成本的网络内容传递给用户。
  • CDN 是利用缓存技术,解决如何将数据快速可靠从源站传递到用户的问题。
    • 用户获取数据时,不需要直接从源站获取,通过 CDN 分发。
    • 用户可以从一个较优的服务器获取数据,从而达到快速访问,并减少源站负载压力的目的(负载均衡)

二、工作过程

img

  • 用户在浏览器输入域名,先向 DNS 服务器发送请求
  • DNS 服务器将域名解析权交(通过 CNAME)给 CDN 专用 DNS 服务器
  • 客户端根据返回的 ip 访问 CDN 负载均衡设备
  • 负载均衡设备根据当前的负载情况和用户所需内容,返回合适的 ip
  • 客户端最后根据 ip 访问对应的 CDN 缓存服务器

三、优点

  • 缓解原服务器访问压力
  • 解决互联互通难题
  • 解决网站突发流量的问题
  • 合理利用互联网资源
  • 全面预防单点故障
  • 改善用户的访问的质量和体验
  • 提供全面、准确、和详细的数据统计
  • 有效的防治黑客攻击源站

四、适用范围

  • 一般来说以资讯、内容等为主的网站,具有一定访问体量的网站。
    • 静态内容(html、js、css、image 等,如图床)
    • 视音频、大文件下载,分发加速:哔哩哔哩、腾讯等视频,百度云盘、蓝奏云等
    • 视频直播加速:斗鱼、淘宝、虎牙直播
    • 移动应用加速:移动 app 内图片、页面、短视频、UGC 等内容,小程序等
  • 像直播这一类必有 CDN,因为一个网站直播流涌入大量用户。

五、判断是否存在CDN

1.方法一:Ping

  • 不同地区对应着不同的 CDN 中心,所以使用不同站点的 ping 服务可分配到不同的 CDN。
  • 使用各种多站点 ping 服务来检查对应的 IP 地址是否唯一。
  • 如果不是唯一的,则使用大多数 CDN。
  • 多站 Ping 网站
    • http://ping.chinaz.com/
    • http://ping.aizhan.com/
    • http://ce.cloud.360.cn/
    • http://tools.ipip.net/ping.php (强烈推荐这个,这个默认多站 ping,真的很多)

2.方法二:nslookup

  • 使用 nslookup 进行检测,原理同上。
    • 如果返回域名解析对应多个 IP 地址多半是使用了 CDN。
  • 有 CDN 的示例
  • 无 CDN 的示例

3.方法三:工具

  • http://tools.bugscaner.com/whichcdn/
  • https://uutool.cn/cdn-check/
  • CDN Finder
    • https://www.cdnplanet.com/tools/cdnfinder/

六、CND绕过

1.方法一:查询 DNS 解析记录

1).查看 IP 与域名绑定的历史记录。使用 CDN 之前可能有记录。
  • 相关查询网站
    • Dnsdb
      • https://www.dnsdb.io/zh-cn/syntax
    • 微步在线
      • https://x.threatbook.com/
    • Netcraft
      • https://sitereport.netcraft.com/
    • IPIP(没错又是这个网站,它太猛了)
      • https://tools.ipip.net/dns.php
      • CDN查询
        • https://tools.ipip.net/cdn.php
    • DNS查询
      • https://dnsdb.io/zh-cn/
    • 在线域名信息查询
      • http://toolbar.netcraft.com/site_report?url=
    • DNS、IP等查询
      • http://viewdns.info/
2).借助 Securitytrails 平台
  • https://securitytrails.com/

  • 攻击者可以查明真实的原始 IP。

    • 只需在搜索字段中输入站点域名并按 ENTER,即可在左侧菜单中找到 “历史数据”。
  • 如何找到隐藏在 CloudFlare(全球网络) 或 Tor(路由) 背后的真实原始 IP。

  • 除了过去的 DNS 记录,即使是当前的记录也可能泄露原始服务器 IP。

    • 例如,MX (DNS“邮件交换”) 记录是查找 IP 的常用方法。
  • 如果网站在与 Web 相同的服务器和 IP 上托管自己的邮件服务器,则原始服务器 IP 将在 MX 记录中。

    • 查邮件地址

2.方法二:查询子域名

  • 毕竟CDN不便宜,很多站长可能只会在主站或者流量大的子站做一个 CDN。
    • 很多小站子站跟主站在同一个服务器或者同 C 段。
    • 此时可以通过子域对应的 IP 查询,帮助找到真实 IP 站点。
  • 微步在线
    • https://x.threatbook.com/v5/mapping
    • 微步在线功能很强大,黑客只需输入域名即可查找。
  • Dnsdb
    • https://www.dnsdb.io/zh-cn/
    • 输入 baidu.com TYPE:A 就可以收集到百度的子域名和 IP。
  • Google
    • https://www.google.com.hk/webhp?hl=zh-TW
    • Google site:baidu.com -www就能查看除www外的子域名
  • 子域扫描器
    • 子域名挖掘机需输入域名即可基于字典挖掘它的子域名
    • Layer 子域名挖掘机
      • lijiejie subdomain(https://github.com/lijiejie/subDomainsBrute)
      • 命令行输入Python subdomainbrute.py baidu.com --full即可收集百度的子域名
        • 收集子域名后,尝试以解析ip,不在cdn上的ip,解析主站,这样真实ip成功被获取到。
    • 推荐长亭的 xray

3.方法三:网络空间引擎搜索法

  • fofa、鹰图、Zoomeye、shodan、360
  • 推荐鹰图
    • 输入:title:“网站的 title 关键字” 或者 body:“网站的 body 特征”
    • 可以找出收录的有这些关键字的 ip 域名,很多时候能获取网站的真实 ip。
  • fofa为例

4.方法四:使用 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 工具
    • 可以扫描整个互联网,用于搜索联网设备信息的新搜索引擎。
    • 全专家可以使用它来评估其实施的安全性,黑客可以使用它作为初步调查。
    • 搜索所有联网设备并收集相关信息,并返回资源(如设备、网站、证书等)配置和部署的整体报告。
    • 攻击者唯一需要做的就是将上述搜索词转换为实际的搜索查询参数。
      • xyz123boot.com 证书的搜索查询参数为:parsed.names: xyz123boot.com
        • 只显示有效证书的查询参数为:tags.raw:trusted
      • 可以使用多参数组合
        • 组合的搜索参数是:parsed.names:xyz123boot.com tags.raw:trusted
          • 会显示在扫描中找到的符合上述搜索条件的所有标准证书。
      • 查看搜索结果
        • 攻击者可以通过单击右侧的 “探索(Explore)” 来打开一个包含多个工具的下拉菜单。
        • 什么在使用这个证书?> IPv4 主机
          • What's using this certificate? > IPv4 Hosts
    • 此时,攻击者将看到一个使用特定证书的IPv4主机列表,而真实原始 IP就藏在其中。
      • 可以通过导航到端口443上的IP来验证
        • 看它是否重定向到xyz123boot.com?
        • 或它是否直接在IP上显示网站?
    • 使用给定的 SSL 证书
      • 如果您是执法人员,并且想找到隐藏在 cheesecp5vaogohv.onion 下的儿童色情网站。
        • 最好的办法是找到它的原始 IP,这样就可以追踪它的托管服务器。
        • 甚至可以找出它背后的运营商和财务线索。
    • 隐藏服务具有 SSL 证书
      • 要查找它使用的 IPv4 主机,只需将 “SHA1 指纹”(签名证书的 sha1 值)粘贴到 Censys IPv4 主机搜索中即可找到证书。
      • 这种方法很容易找到配置错误的 Web 服务器。

5.方法五:使用 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

6.方法六:利用网站返回的内容寻找真实的原 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
    • 搜索示例:https://www.shodan.io/search?query=http.html:UA-32023260-1

7.方法七:使用国外主机解析域名

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

8.方法八:网站漏洞搜索

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

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

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

10.方法十:用 Zmap 扫描全网

  • 要找到 xiaix.me 网站的真实 IP
    • 首先从 apnic(网络信息中心ipv4,ipv6,AS) 获取 IP 段
    • 然后使用 Zmap 的 banner-grab 扫描出来 80 端口开放的主机进行 banner 抓取
    • 最后在 http-req 中的 Host 写 xiaix.me
  • 不建议使用

11.方法十一: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。

12.方法十二:网页敏感信息

  • favicon 哈希值

    • 根据网站图标哈希值搜索 IP
  • python2 脚本

    • href="http:xxx/favicon.ico"
      icon有唯一的hash值
      
    • import mmh3
      import requests
      response = requests.get('https://example.com/favicon.ico')
      favicon = response.content.encode('base64')
      hash = mmh3.hash(favicon)
      print 'http.favicon.hash:'+str(hash)
      
  • 去 fofa 或者 shodan 上搜索该哈希值

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

    • 根据网站页面 HTML 中特有的字符串去搜索引擎中搜索
posted @ 2023-09-02 01:43  树大招疯  阅读(139)  评论(0编辑  收藏  举报