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

相关推荐
清风66666620 小时前
基于单片机的井盖安全监测与报警上位机监测系统设计
单片机·嵌入式硬件·安全·毕业设计·课程设计·期末大作业
米羊12120 小时前
安全交付 (上)
安全
lubiii_21 小时前
网络安全需掌握的专业术语解析
安全·web安全·网络安全
计算机毕设指导621 小时前
基于微信小程序的网络安全知识科普平台系统【源码文末联系】
java·spring boot·安全·web安全·微信小程序·小程序·tomcat
Bruce_Liuxiaowei21 小时前
Windows系统sc命令:系统安全防护的实用工具
windows·安全·系统安全
网络研究院21 小时前
监管要求不统一暴露了移动安全方面的漏洞
网络·安全·漏洞·风险·监管
艾莉丝努力练剑21 小时前
【Python基础:语法第六课】Python文件操作安全指南:告别资源泄露与编码乱码
大数据·linux·运维·人工智能·python·安全·pycharm
xian_wwq1 天前
【学习笔记】攻击链贯穿端边云!边缘网络访问三大核心风险预警
笔记·学习·安全·边缘计算
老赵聊算法、大模型备案1 天前
北京市生成式人工智能服务已备案信息公告(2025年12月11日)
人工智能·算法·安全·aigc
鹿鸣天涯1 天前
Kali Linux 2025.4 发布:桌面环境增强,新增 3 款安全工具
linux·运维·安全