利用 Cloudflare Partner 劫持域名

本文最后更新于:2022年10月14日 上午

若域名解析到 1.1.1.1,且未接入 Cloudflare,则大概率存在域名劫持。

Cloudflare 想必橘友们还是很熟悉的,作为世界最大的 CDN 服务提供商之一,还有吊炸天的 1.1.1.1、1.0.0.1 作为公共的 DNS 服务。

我的博客就是白嫖的他们家的 CDN,配置、体验都非常的银杏化(后面我打算写篇文章来分享一下我的博客自动化部署以及访问加速等配置)。

不啰嗦了,一句话:若域名解析到 1.1.1.1,且未接入 Cloudflare,则大概率存在域名劫持。

例子

先看例子,再看解释说明,如果你看懂了例子背后的原理,那么后面的内容就可以直接跳过了。

假设有个子域名是 a.macr0phag3.online,所有者将它解析到了 1.1.1.1

然后我们作为攻击者,发现这种域名之后,先找个在线的 Cloudflare Partner,比如:

https://su.vv1234.cn/

先把二级域名接进去:

发现可以添加成功之后,再把这个子域名的 A 记录设置成自己的服务器地址:

这个时候,a.macr0phag3.online 的流量就会被劫持到你的服务器上。

从 Cloudflare 控制台也可以看到这个是有效的接管:

利用解释

在看下文之前,需要对 DNS 相关的知识有一定的了解,可以参考我的历史系列文章:

https://www.tr0y.wang/2020/09/14/DNS-1-basic/

解析到 1.1.1.1 有什么特殊含义吗?

这是 Cloudflare 的一个著名的公共 DNS 的 ip 地址,其实也可以作为 CDN 的一个节点。

首先大家可能比较疑惑的是,什么会有人把域名挂到 1.1.1.1。据我的了解,有些公司的运维在管理域名的时候,喜欢把没用到的(子)域名是先挂上 1.1.1.1 来测试或者占位;以及域名不使用了之后,就把之前的解析记录换成 1.1.1.1。

其次,解析到其他 CDN 地址也是可以用这种方式进行劫持的,比如 1.0.0.1 等等。这里只是用 1.1.1.1 为例子。

最后,思考一个问题:如果一个域名没有接入 Cloudflare,但也没有配置 1.1.1.1 的 A 记录,那么还能被这种方式劫持吗?答案肯定是不可以(如果可以的话还得了...)。

看下这张简单的 CDN 架构图就明白了:

所以攻击者虽然没拥有 1.1.1.1,无法实现直接的劫持,但是 1.1.1.1 作为 CDN 入口之一,是需要刷新资源的,它要回源去原站拿响应,再返回给用户,而这个回源的地址正是攻击者配置的 A 记录。

Cloudflare Partner

为什么攻击者要在 Cloudflare Partner 上添加解析记录呢?

我们尝试在 Cloudflare 控制台直接添加看看:

熟练地选择白嫖:

可以看到,需要真正地接入成功,需要将 NS 改到 Cloudflare 这里:

那么 macr0phag3.online 并不是攻击者所有的,那么自然也就无法修改 NS。需要改 NS,这可以当做检查你真正拥有这个域名的一道认证流程。

虽然大部分提供 DNS 解析服务商(比如万网)都需要验证 NS,但是有很多人不愿意修改 NS,因为某些 DNS 解析服务商的功能比较多或者是有些独有的功能,而 Cloudflare 不一定有(毕竟 Cloudflare 也不是做慈善的,它是有付费版的)。

问题出现自然是寻找绕过办法,Cloudflare Partner 就是一个 bypass。

解释一下什么是 Cloudflare Partner。

Cloudflare Partner 合作伙伴计划,提供另一种方法来接入 Cloudflare。Cloudflare Partner 的作用有两点:

  1. Cloudflare 为了拓展用户提供的渠道,我的理解就是下游的分销商。
  2. 为开发者或者主机提供商提供便利的 API 服务,方便提供各种自动化能力。

总之,合作伙伴计划使得用户不需要登录 Cloudflare 官网就可以管理域名解析,可以在 WHMCS、Cpanel 等面板中使用集成的 Cloudflare CDN 加速服务。当然,这条路子还可以让用户免费用到 Cloudflare Pro 的一些功能(比如用 cname 方式接入 CDN),所以网上才会有那么多人用 Cloudflare Partner。

那么是否验证 NS 就取决于 Cloudflare Partner,既然是可选的那么一般就不会有人做,这就是人性。所以绝大部分的 Cloudflare Partner 都不会验证 NS,你说要接就接,前提是之前没人接入过。再说申请 Cloudflare Partner 也并不难,自己申请个,想怎么搞就怎么搞。

需要注意的是,域名在添加进 Cloudflare Partner 的时候,还会遇到这个提示:

Cloudflare 似乎有个名单,在这个名单里的域名是不能接入 Cloudflare 的,原因不详,橘友们可以找找资料,我就不找了。

利用限制

这个利用方式我是在去年 11 月份发现的,当时也有一些小伙伴拿去刷 src 了。本来这个利用方式没有额外的限制,这两天发现 Cloudflare Partner 会报错:

查了下相关资料,发现 2021-11-19 起陆续有人收到 Cloudflare 的邮件:

之前的 zone_set 方法停用,现在的 full_zone_set 需要验证新添加的域名的 NS 记录是否指向 Cloudflare。

所以现在是没法通过 Cloudflare Partner 接入新的域名的。

挺好的。

突破限制

不过在查找资料的过程中,我发现还有一种方式可以不修改 NS 接入新的域名:ion WordPress + Plesk:

https://188299.xyz/2021/01/16/

稍微解释下,ion 就是类似阿里云这种服务商,还有提供 WordPress 一把梭套件的服务;Plesk 面板就是个管理的后台。

不过我看了下目前 ion 并没有免费空间活动,我说我买个吧,还只能按年付费:

真特么贵,不玩了。

他这个教程我看下来,搞了这么多其实,就是要白嫖 Cloudflare Pro 的。所以这个方法能加的本质原因应该是 Cloudflare Pro 还可以不经过 NS 验证加。不过这个结论我没测试,因为测试需要 20 刀,我就用几次,有点亏。

ion 后面我蹲蹲活动看看吧,有的话再分享给橘友们。虽然现在看起来 ion 的免费活动可能是绝版了。橘友们如果已有 ion 的 WordPress,或者是开通了 Cloudflare Pro 的话,可以私信我一起搞下,或者自己实验实验。如果没有的话就算了吧。

保不准 Cloudflare 后面加大限制力度,把 Cloudflare Pro 这个途径也干掉了呢。

随缘吧咱们。

总结

这个利用方式现在是有一定门槛的。在利用条件中,看起来解析到 1.1.1.1 比较苛刻,但实际上这种情况还真不少见。


橘友们觉得这种域名接管
定哪个级别的漏洞比较合适呢?


利用 Cloudflare Partner 劫持域名
https://www.tr0y.wang/2022/01/11/domain-takeover-by-cfp/
作者
Tr0y
发布于
2022年1月11日
更新于
2022年10月14日
许可协议