【Web安全】如何在 CDN 干扰下精准检测 SSRF?Nuclei + Interactsh 实战

❤️博客主页iknow181
🔥系列专栏网络安全PythonJavaSEJavaWebCCNP
🎉欢迎大家点赞👍收藏⭐评论✍


背景

在日常漏洞复核中,我们常用 DNSLog 平台判断目标是否存在 SSRF 漏洞:只要请求体里带一个可控域名,就能收到一次 DNS 查询。然而,当目标使用了 CDN(如 Cloudflare、Akamai、阿里云 CDN 等)时,你会发现:

  • 无论路径是否命中业务逻辑,只要请求体里出现域名,DNSLog 都会收到解析。
  • 查询源 IP 全部是 CDN 出口段,导致你无法区分到底是"真·SSRF"还是"CDN 在扫域名"。

CDN 的"扫域名"行为

CDN 厂商为了安全和性能,往往在流量经过时会:

  1. 安全扫描(WAF/Threat Intel)
    对请求体/请求头中的域名做一次 DNS 查询,判断是否在恶意域名库里。
  2. 资源预取/链接优化
    对响应体里的外部资源链接做预取或缓存可用性检查,也会触发 DNS 解析。

结论纯粹的 DNS 查询 (protocol=dns)很可能是 CDN 在做"探测",而不是真正的后端 HTTP 请求。

精准检测 SSRF:Interactsh OOB 回调

要区分"CDN 探测"与"真实 SSRF",就要看目标服务器有没有真正发起 HTTP/TCP/Gopher 请求

ProjectDiscovery 提供的 Interactsh 平台,能捕获多协议回调,正好满足需求。

  • 支持协议:DNS、HTTP、TCP、Gopher、SMTP......
  • 公共平台interact.sh(零运维,上手快)
  • 自建服务interactsh-server(高并发、私密可控)

Nuclei 中的 OOB 回调机制

  1. 在模板中声明 callbacks

callbacks: - "interactsh://{``{.RAND}}.{``{interactsh-url}}"

这一步告诉 Nuclei:

    • 使用 Interactsh 协议
    • 回调域名模板是 {``{.RAND}}.{``{.interactsh-url}}
    • 扫描前自动向 OOB 平台注册,扫描后自动轮询回调日志
  1. 使用占位符 {{interactsh-url}}
    • 默认会被替换为 interact.sh(公共平台)
    • 或者被替换为自建服务域名(需配合 -iserver/-itoken
  1. matchers 精准筛选协议

    matchers:

    • type: word
      part: interactsh_protocol
      words:
      • http
      • gopher
      • tcp

仅当后端真正发起 HTTP、Gopher 或 TCP 连接时才算"命中"。

CDN 的纯 DNS 探测(protocol=dns)会被自动过滤掉。


公共平台 vs 自建服务

|-----------|------------------|------------------|
| 特性 | 公共 interact.sh | 自建 Interactsh |
| 运维成本 | 零 | 需部署、运维 |
| 并发 & 稳定性 | 共享资源,可能有速率限制 | 高并发、自定义资源 |
| 隐私 & 安全 | 回调日志公开(所有用户共用) | 私密可控 |
| 上手速度 | 秒级启动 | 需安装 Go 环境、配置启动脚本 |

自建启动示例
复制代码
# 安装
go install github.com/projectdiscovery/interactsh/cmd/interactsh-server@latest

# 启动
interactsh-server -listen 0.0.0.0:9999 -domain yourdomain.com

运行 Nuclei 时加上:

复制代码
nuclei \
  -t ssrf-http.yaml \
  -l targets.txt \
  -iserver https://yourdomain.com \
  -itoken YOUR_TOKEN \
  -rate-limit 50

完整模板示例

复制代码
id: ssrf-http-detect

info:
  name: SSRF HTTP/Gopher Detection
  author: YourName
  severity: medium
  description: |
    使用 Interactsh 回调,区分 CDN 探测(仅 DNS)与真实 SSRF(HTTP/TCP/Gopher)。

variables:
  CALLBACK: "{{interactsh-url}}"
  RAND: "{{random 6}}"

requests:
  - raw:
      - |
        GET http://{{.RAND}}.{{.CALLBACK}}/test HTTP/1.1
        Host: {{Hostname}}
      - |
        GET gopher://{{.RAND}}.{{.CALLBACK}}/_ HTTP/1.1
        Host: {{Hostname}}
    callbacks:
      - "interactsh://{{.RAND}}.{{.CALLBACK}}"
    matchers:
      - type: word
        part: interactsh_protocol
        words:
          - http
          - gopher
          - tcp
  • {{random 6}}:生成 6 位随机前缀,避免子域名冲突
  • {{.CALLBACK}}:运行时自动替换为 interact.sh 或自建域名
  • matchers:只匹配 http/gopher/tcp,过滤掉纯 DNS 探测

推荐扫描流程

  1. DNS 初筛(可选)

    callbacks:

    • "dns://{{random 6}}.{{interactsh-url}}"

快速判断哪些目标"有域名解析行为"。

  1. HTTP 深筛
    使用上面的完整模板,只保留 HTTP/Gopher/TCP 回调,精准识别真实 SSRF。

总结

  • CDN 扫描 ≠ SSRF:纯 DNS 回调通常是 CDN/WAF 在探测。
  • Interactsh 回调:能捕获多协议回调,区分"解析"与"连接"。
  • Nuclei 配置
    • callbacks + {``{interactsh-url}} 自动注册、轮询
    • matchers 只匹配 HTTP/Gopher/TCP
    • 公共平台无需额外参数,自建服务用 -iserver/-itoken

按此方法批量扫描,既能高效初筛,也能精准复核,最大限度减少误报,只留下真正的 SSRF 漏洞。欢迎点赞、评论与分享!

相关推荐
newxtc1 小时前
【指纹浏览器系列-chromium编译】
人工智能·安全
恒拓高科WorkPlus1 小时前
一款安全好用的企业即时通讯平台,支持统一门户
大数据·人工智能·安全
zhongtianhulian4 小时前
中天智能装备有限公司的托盘式立库有哪些安全保护措施?
安全·云计算
appcanLiYunLong5 小时前
Webrtc让浏览器实现无服务器中转的安全私密聊天
安全·serverless·webrtc
群联云防护小杜5 小时前
隐藏源站IP与SD-WAN回源优化:高防架构的核心实践
网络·分布式·网络协议·tcp/ip·安全·架构·ddos
SlientICE6 小时前
预防WIFI攻击,保证网络安全
网络·安全·php
Aphelios3809 小时前
智能Todo协作系统开发日志(二):架构优化与安全增强
java·前端·javascript·安全·个人开发
咖喱年糕12 小时前
【Windows】系统安全移除移动存储设备指南:告别「设备被占用」弹窗
windows·安全·系统安全
CYRUS_STUDIO12 小时前
Android NDK 编译 so 文件 抹除导出符号 反逆向
android·安全·逆向
安 当 加 密13 小时前
如何通过Radius认证服务器实现虚拟云桌面安全登录认证:安当ASP身份认证系统解决方案
服务器·网络·安全