Loading

2.1 CDN Bypass

简介

cdn 部分概念摘自腾讯云文档 ,绕过方法结合此篇文章此篇

是什么?

内容分发网络(Content Delivery Network,CDN),是在现有 Internet 中增加的一层新的网络架构,由遍布全球的高性能加速节点构成。

解决了什么问题?

主要为了提高用户访问静态资源的效率。

  • 静态内容指用户多次访问某一资源,响应返回的数据都是相同的内容。
    例如:html、css 和 js 文件、图片、视频、软件安装包、apk 文件、压缩包文件等。
  • 动态内容指用户多次访问某一资源,响应返回的数据是不相同的内容。
    例如:API 接口、.jsp、.asp、.php、.perl 和 .cgi 文件等。

这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当用户向某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点快速响应,有效降低用户访问延迟,提升可用性。

如何搭建 cdn?

了解如何搭建使用 CDN 服务,可以更好的理解绕过方法。

计费规则

img

接入域名

提供要进行加速的域名,以及进行回源的方式

img

配置 CNAME

image-20210423092708259

总结

当用户购买 CDN 服务后,选择要加速的域名,设置好回源地址。然后 CDN 产品提供商会提供一个 CDN 域名。之后用户在域名提供商处申请添加 CNAME 记录(委托解析),即令域名服务器把将要加速的域名解析到 CDN 域名。

当用户访问时会直接访问到 CDN 的域名,从而然后 CDN 提供商选则最佳接入点 IP 。

img

第三步中返回的最佳接入点ip有没有可能是服务器真实 ip?。不可能

检测是否存在 CDN

查看 DNS 记录

因为 CDN 部署时必须要在 域名管理处设置 CNAME ,故可以根据这点判断。

DNS 查询工具

设置 CNAME 不一定就存在 CDN

多地 ping

如果 ip 地址不同,基本就是存在 cdn。

利用的是第三步,不同区域可能会返回不同的最佳接入 IP。

nslookup

解析一下,如果看到多个 address ,则基本存在 cdn。可以根据应答 dns 服务器名称判断。

若只显示一个 address 不能说就没有cdn

绕过方法

某些域名可能没有设置 cdn 加速

常见的情况是一台服务器上有多个虚拟主机(即多个域名可以解析到一个 ip)。服务器根据收到请求中 HOST header 来判断该将请求转给哪个虚拟主机。

在这种情况下,网站搭建者考虑成本,可能只给 www 主机设置 CDN,而其它子域名没有设置。从而可以通过其它子域名直接访问到真实ip。

即使一台服务器只包含一个虚拟主机,也可以通过这种方法定位到目标主机的 ip 网段。

所以,尝试收集目标域名相关信息,判断是否有某个子域名暴露服务器真实 ip。

关于子域名收集方法:等链接到其它小节

查询历史 dns 记录

原理是服务器在购买域名到设置 cdn 服务这段时间,dns 记录为服务器真实 ip。

历史 dns 查询工具

国外主机解析域名

在配置 CDN 时可以选择加速区域是国内、国外、全球。

此外,一些 CDN 厂商只做了国内的线路,而针对国外的线路可能几乎没有。

此时我们使用国外的主机直接访问就有可能获取到真实IP。

全球 ping 工具

邮件服务器地址

通常邮件服务器和 web 服务器在同一网段,所以可以通过这种方法探测到目标服务器所在网段。

想办法通过网站功能,让对方发送一邮件给自己,然后查看收到的邮件原文中 received 字段(从下往上看)。

搜索关键信息

利用 fofa、shodan、zoomeye 等搜索引擎,搜索网站具有标识性的东西,例如 title 、favicon、Etag 等特殊头部等等。在结果之中就有可能是网站真实 IP。

网上倒是有根据 favicon_hash 进行匹配。 但问题是,zoomeye 没有 hash 搜索功能、而fofa 要收费、shodan 则对国内信息收集较差。。。

ssl 证书探测

要求目标使用 https 服务。原理是 ssl证书是ca签发给原始 ip 的,里面包含了原始地址(证书所属者)所使用的公钥,其他cdn只是使用,不具备新建证书权限,所以只要定位到了公钥信息就可以搜索到起对应的所属者,也就是原始ip。

利用方法:

  1. 先在这个 网站 搜索目标网站使用的证书。在最新的结果里找到 叶证书 (Leaf certificate) 。

  2. 复制证书信息中的 sha_256 值,在 censys 使用以下语法搜索。

    443.https.tls.certificate.parsed.fingerprint_sha256:
    
  3. 得到的即是授权的证书的 ip 地址。

和 cdn 建立的 https 连接,用的是网站的证书还是 cdn 公司提供的证书?

利用网站自身漏洞
  1. 目标敏感文件泄露,例如:phpinfo之类等。
  2. 让服务器给自己的主机发送请求,可以通过 xxe、sql 注入、csrf、ssrf 等具有发送请求功能的漏洞来实现。

其它

从 ip 网段定位到主机

当获取到网段时,跑一遍该网段所有 ip ,抓取 http title,看是否与网站上标题相一致,从而确定网站 ip。

即使网站不允许直接通过 ip 访问,检测方法通常是 http 协议中的 Host 头部 ,所以只要模拟这个头部就好。

因为 CDN 回源 设置可以指定端口,如果如果目标目标服务器没有采用常见的web 端口( 80、443、8080 等),则除了扫全端口外,暂时没想到其它好方法。

可以利用 搜索引擎 shodan 、fofa 等,查找搜集信息,进行比对。

ssl 知识

img

  1. 客户端发起 https 请求,服务端返回证书,其中包含非对称加密的公钥。

  2. 客户端生成对称加密密钥,然后通过证书中的公钥将其加密,然后传给服务端。

    因为非对称加密,即使将这段内容拦截,没有私钥也无法解密得知对称密钥。

  3. 然后双方使用对称密钥通信。

虚拟主机 与 CDN

在实际中有时会出现多个不是一个机构的域名解析到同一个 ip 地址,这种情况下就有可能是共享型虚拟主机。

云服务器和云虚拟主机。简单理解,云虚拟主机是云服务器预先内置好了搭建网站所需的应用。

腾讯云没有共享型虚拟主机,而 阿里云 提供这项服务。详见

搭建共享型虚拟主机:

  1. 为共享型虚拟主机绑定域名,这样中间件就知道要把到达这台服务器的请求转发给哪个网站。
  2. 在域名提供商处为域名添加 CNAME 记录,指向这个临时域名。

独享型虚拟主机能否搭建 cdn ?可以。

共享型虚拟主机能否搭建 cdn?不能

  • 从现实的角度而言,共享型虚拟主机的网站访问量一般不大,或者节省经费起见,不会设置 CDN。

  • 从技术的角度而言,因为 CNAME 通常只设置一个,而共享型虚拟主机和 CDN 都要求在域名提供商处添加 CNAME 记录,指向它。

posted @ 2021-03-25 19:00  沉云  阅读(408)  评论(0编辑  收藏  举报