Cloudflare Tunnel — 原始服务器暴露的武器化

216 阅读4分钟

官网:http://securitytech.cc/

Cloudflare Tunnel — 原始服务器暴露的武器化

隧道简介

Cloudflare Tunnel 是将私有应用暴露到互联网的一种流行方式,无需开放防火墙端口。它广泛用于内部仪表板、API 和测试环境。理论上,它可以隐藏源服务器 IP,并将所有流量通过 Cloudflare 网络,在那里启用 WAF、防 DDoS 和缓存保护。

但是,如果源服务器仍然暴露在互联网上怎么办?

在本文中,我将演示我如何测试 Cloudflare Tunnel 配置、发现误配置,并将源服务器暴露武器化,从而完全绕过 Cloudflare。这不仅是理论,我会展示完整的侦察步骤、漏洞利用流程,以及攻击者如何利用它。


🛠️ 基础知识:Cloudflare Tunnel 与代理

  • Cloudflare 代理:通常,网站通过 Cloudflare 代理隐藏真实 IP,攻击者只能看到 Cloudflare 的 IP。
  • Cloudflare Tunnel:服务器本身创建安全的出站连接到 Cloudflare,而不是开放入站端口,这样源 IP 理论上不会被直接看到。
  • Workers:边缘脚本,经常内部代理请求,配置错误也可能导致数据泄露。

预期流程是: 👉 用户 → Cloudflare → Tunnel → 源服务器

但在误配置的情况下,攻击者可以绕过 Cloudflare: 👉 攻击者 → 源服务器(直接 IP)


🚨 问题:源服务器暴露

当源服务器 IP 未被限制时,它仍可以在 Cloudflare 外部访问。这意味着:

  • WAF(Web 应用防火墙)被绕过
  • DDoS/速率限制被绕过
  • 攻击者可以直接与后端交互

就像前门上锁了,但后门完全敞开。


🔍 如何测试源服务器暴露

1️⃣ 枚举 DNS

检查目标域名的 DNS 记录:

dig +short admin.example.com
dig +trace admin.example.com
  • IP 属于 Cloudflare → 正常
  • 不属于 Cloudflare → 可能存在暴露
  • 可交叉对照 Cloudflare 官方 IP 范围

2️⃣ 查看历史 DNS

攻击者喜欢 DNS 历史记录。即使你修复了配置,旧 IP 可能仍然有效。

工具:

  • SecurityTrails
  • Shodan
  • ViewDNS
  • Censys

3️⃣ 直接访问疑似源 IP

尝试访问疑似源 IP:

curl -I http://<origin-ip>
  • Cloudflare 代理 → 响应头会有 cf-raycf-cache-status
  • 直接访问源服务器 → 响应头可能显示 Server: Apachenginx

4️⃣ 扫描端口

检查暴露的端口:

nmap -Pn -sV <origin-ip>
  • 端口 80/443 提供应用 → 可直接绕过 Cloudflare
  • 其他端口(8080、8443)可能用于测试/管理面板

5️⃣ Shodan / Censys 侦察

hostname:"example.com"

如果 Shodan 显示应用托管在非 Cloudflare IP 上 → 暴露源服务器


⚡ 武器化:从泄露到利用

一旦确认源服务器,攻击者可以:

  1. 绕过 WAF — 利用 Cloudflare 通常会拦截的攻击负载(SQL 注入、XSS、RCE)
  2. 暴力破解认证 — 无速率限制
  3. 指纹识别服务器 — 精确识别 Apache/Nginx 版本,有时还会泄露操作系统信息
  4. 攻击非标准服务 — 管理面板、API、测试服务器

示例攻击链

  1. admin.example.com 在 Cloudflare Tunnel 后面
  2. SecurityTrails 发现旧 IP 198.51.100.23
  3. 访问该 IP 显示相同管理面板,无 Cloudflare 头
  4. 暴力破解登录 → 无机器人保护
  5. 弱密码 → 获取管理员权限 → 完全接管

这就是 源服务器暴露的武器化


🎯 影响

  • 完全绕过 Cloudflare 保护
  • 攻击者可自动化发起攻击而不被检测
  • 敏感应用(管理面板、API、测试服务器)完全暴露
  • 最严重时,可能导致 远程代码执行(RCE)账户接管(ATO)

🛡️ 防御与缓解

防御方法:

  • 限制源服务器仅接受 来自 Cloudflare IP 范围 的流量
  • 配置防火墙丢弃所有其他入站请求
  • 对 Tunnel 确保服务无法直接访问
  • 为内部仪表板启用 Cloudflare Access/Zero Trust
  • 持续监控泄露的 DNS 记录和暴露 IP

📚 教训

  • Cloudflare 提供保护层,但不能魔法般地保护配置错误的服务器
  • 始终测试源服务器是否可以直接访问
  • 将 Cloudflare Tunnel 当作额外锁,而不是唯一锁
  • 对渗透测试人员:在方法论中加入 源服务器暴露检查

✍️ 总结

Cloudflare Tunnel 旨在隐藏源服务器并保护服务。但如果源服务器仍暴露,攻击者可以直接绕过 Cloudflare 发起攻击。

  • 从攻击角度看,一旦发现源服务器,整个 Cloudflare 屏障就失效
  • 从防御角度看,解决方法简单:在源服务器阻止所有非 Cloudflare 流量

隧道本应是单向门。如果攻击者找到侧门,整座“城堡”就会失守。