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

相关推荐
漠月瑾-西安7 小时前
网络安全自动化:精准把握自动化边界,筑牢企业安全防
安全·web安全·自动化
看山还是山,看水还是。9 小时前
网星安全AWS攻防方案,重磅发布!
运维·笔记·安全·云计算·aws
Hzhile9 小时前
攻防世界-php伪协议和文件包含
android·开发语言·安全·web安全·网络安全·php
安全方案11 小时前
2025信息安全网络安全意识培训资料汇编(24份)
网络·安全·web安全
mooyuan天天13 小时前
Webug4.0通关笔记06- 第8关CSV注入
web安全·webug靶场·csv注入漏洞
IT成长日记15 小时前
【Hive入门】Hive安全管理与权限控制:基于SQL标准的授权GRANT REVOKE深度解析
hive·sql·安全·grant·revoke
mooyuan天天16 小时前
Webug4.0靶场通关笔记15- 第19关文件上传(畸形文件)
web安全·文件上传漏洞·webug靶场·双写绕过
Jwoka18 小时前
URL混淆与权限绕过技术
网络·web安全·系统安全·渗透·thm
vortex518 小时前
Socat 用法详解:网络安全中的瑞士军刀
linux·安全·web安全·网络安全
满怀10151 天前
【ICMP协议深度解析】从网络诊断到安全实践
网络·tcp/ip·安全·icmp·网络诊断