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

相关推荐
DS小龙哥1 小时前
基于单片机汽车少儿安全预警系统
单片机·安全·汽车
菲路普科技2 小时前
国产芯+单北斗防爆终端:W5-D防爆智能手机,助力工业安全通信升级
安全·智能手机
m0_738120723 小时前
Solar月赛(应急响应)——攻击者使用什么漏洞获取了服务器的配置文件?
运维·服务器·安全·web安全·网络安全
Status_5006 小时前
XSS跨站脚本攻击详解
web安全·xss
卓码软件测评7 小时前
软件测试测评公司关于HTTP安全头配置与测试?
web安全·网络安全·安全性测试·web app
网络研究院7 小时前
从内部保护你的网络
网络·安全·风险·成本·措施
wanhengidc9 小时前
高防服务器租用:保障数据安全
服务器·网络·安全
一只鹿鹿鹿13 小时前
【网络安全】等级保护2.0解决方案
运维·安全·web安全·架构·信息化
自由鬼14 小时前
如何处理Y2K38问题
java·运维·服务器·程序人生·安全·操作系统
根本睡不醒#20 小时前
kali安装maven
java·web安全·网络安全·maven