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/速率限制被绕过
- 攻击者可以直接与后端交互
就像前门上锁了,但后门完全敞开。
如何测试源服务器暴露
枚举 DNS
检查目标域名的 DNS 记录:
dig +short admin.example.comdig +trace admin.example.com
- IP 属于 Cloudflare → 正常
- 不属于 Cloudflare → 可能存在暴露
- 可交叉对照 Cloudflare 官方 IP 范围
查看历史 DNS
攻击者喜欢 DNS 历史记录。即使你修复了配置,旧 IP 可能仍然有效。 工具:
- SecurityTrails
- Shodan
- ViewDNS
- Censys
直接访问疑似源 IP
尝试访问疑似源 IP:
curl -I http://<origin-ip>
- Cloudflare 代理 → 响应头会有
cf-ray
、cf-cache-status
- 直接访问源服务器 → 响应头可能显示
Server: Apache
或nginx
扫描端口
检查暴露的端口:
nmap -Pn -sV <origin-ip>
- 端口 80/443 提供应用 → 可直接绕过 Cloudflare
- 其他端口(8080、8443)可能用于测试/管理面板
Shodan / Censys 侦察
hostname:"example.com"
如果 Shodan 显示应用托管在非 Cloudflare IP 上 → 暴露源服务器
武器化:从泄露到利用
一旦确认源服务器,攻击者可以:
- 绕过 WAF — 利用 Cloudflare 通常会拦截的攻击负载(SQL 注入、XSS、RCE)
- 暴力破解认证 — 无速率限制
- 指纹识别服务器 — 精确识别 Apache/Nginx 版本,有时还会泄露操作系统信息
- 攻击非标准服务 — 管理面板、API、测试服务器
示例攻击链
admin.example.com
在 Cloudflare Tunnel 后面- SecurityTrails 发现旧 IP
198.51.100.23
- 访问该 IP 显示相同管理面板,无 Cloudflare 头
- 暴力破解登录 → 无机器人保护
- 弱密码 → 获取管理员权限 → 完全接管
这就是 源服务器暴露的武器化 。
影响
- 完全绕过 Cloudflare 保护
- 攻击者可自动化发起攻击而不被检测
- 敏感应用(管理面板、API、测试服务器)完全暴露
- 最严重时,可能导致 远程代码执行(RCE) 或 账户接管(ATO)
防御与缓解
防御方法:
- 限制源服务器仅接受 来自 Cloudflare IP 范围 的流量
- 配置防火墙丢弃所有其他入站请求
- 对 Tunnel 确保服务无法直接访问
- 为内部仪表板启用 Cloudflare Access/Zero Trust
- 持续监控泄露的 DNS 记录和暴露 IP
教训
- Cloudflare 提供保护层,但不能魔法般地保护配置错误的服务器
- 始终测试源服务器是否可以直接访问
- 将 Cloudflare Tunnel 当作额外锁,而不是唯一锁
- 对渗透测试人员:在方法论中加入 源服务器暴露检查
总结
Cloudflare Tunnel 旨在隐藏源服务器并保护服务。但如果源服务器仍暴露,攻击者可以直接绕过 Cloudflare 发起攻击。
- 从攻击角度看,一旦发现源服务器,整个 Cloudflare 屏障就失效
- 从防御角度看,解决方法简单:在源服务器阻止所有非 Cloudflare 流量
隧道本应是单向门。如果攻击者找到侧门,整座“城堡”就会失守。
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)