【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 漏洞。欢迎点赞、评论与分享!

相关推荐
用户9623779544814 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机18 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机18 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544819 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star19 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透6 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全