SSRF in the Wild: A totally unscientific analysis of those SSRFs found in the wild
字数 1858 2025-08-25 22:58:20

SSRF漏洞深度分析与实战教学

一、SSRF概述

服务器端请求伪造(Server-Side Request Forgery, SSRF)是一种安全漏洞,攻击者能够利用服务器发起未经授权的内部请求。这种漏洞通常发生在应用程序从用户提供的URL获取数据时,没有对目标地址进行充分验证的情况下。

二、SSRF漏洞常见出现位置

1. 主要功能组件分布

根据对76个公开SSRF报告的分析,漏洞主要出现在以下功能组件中:

功能组件 占比 说明
文件上传 36% 最常见的SSRF入口点
代理服务 24% 网页代理、转换服务等
Webhooks 16% 回调URL配置
管理配置 11% 特别是XML导入功能
其他 13% 各种接收URL的非标准功能

2. 高危文件类型

可能导致SSRF漏洞的文件类型包括:

  • SVG (可包含外部资源引用)
  • XML (特别是XXE导致的SSRF)
  • JSON (某些解析器会获取外部URL)
  • JPG/PNG (某些处理程序会获取外部元数据)

三、SSRF漏洞挖掘方法论

1. 目标定位策略

  1. 优先测试区域

    • 任何文件上传功能
    • 网页代理或URL转换服务
    • Webhook配置界面
    • 数据导入/导出功能
  2. 次级测试区域

    • 隐藏的API端点
    • HTML注入点(可能导致资源加载)
    • 文档处理服务(如PDF生成)

2. 测试流程

  1. 基础探测

    http://localhost
    http://127.0.0.1
    http://169.254.169.254 (AWS元数据服务)
    
  2. 协议探测

    file:///etc/passwd
    dict://localhost:22
    ftp://attacker.com
    
  3. 绕过技术

    • 使用进制/八进制IP表示:http://0177.0.0.1
    • 域名重定向:http://xip.io → http://127.0.0.1.xip.io
    • URL编码/双重编码
    • 主机头注入

四、SSRF漏洞危害与利用

1. 基础危害

  • 访问内部服务
  • 端口扫描内网
  • 读取本地文件(通过file协议)

2. 高级利用

  1. 云环境利用

    • AWS元数据API:169.254.169.254
    • GCP元数据:metadata.google.internal
    • 获取临时凭证,接管云资源
  2. 漏洞链构造

    • 结合Redis/Memcached未授权访问实现RCE
    • 通过内部API实现权限提升
    • 访问管理接口修改配置
  3. 绕过限制

    • DNS重绑定攻击
    • 利用CRLF注入构造恶意请求
    • 利用URL解析差异

五、防御措施分析

1. 常见错误防御

  1. 黑名单过滤

    • 容易被绕过(如localtest.me解析为127.0.0.1)
    • 无法覆盖所有内部IP表示形式
  2. 仅过滤输入

    • 忽略文件内容中的URL
    • 不处理重定向

2. 推荐防御方案

  1. 白名单验证

    • 只允许访问特定的域名和协议
    • 验证DNS解析结果是否符合预期
  2. 网络层防护

    • 限制服务器出站连接
    • 禁止访问内部IP段
    • 禁用危险协议(file, dict等)
  3. 应用层防护

    • 使用固定解析库(避免解析差异)
    • 禁用跟随重定向
    • 设置连接超时

六、实战案例研究

案例1:SVG文件上传SSRF

漏洞场景
网站允许上传SVG作为头像,SVG处理器会加载外部资源

攻击载荷

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <image xlink:href="http://169.254.169.254/latest/meta-data/"/>
</svg>

防御措施

  • 禁用SVG中的外部资源引用
  • 使用CSP限制资源加载

案例2:Webhook配置SSRF

漏洞场景
Webhook测试功能未验证回调URL

攻击载荷

http://internal-api.company:8080/admin/reset

防御措施

  • 验证目标IP不在内网段
  • 添加HMAC签名验证请求来源

七、进阶研究建议

  1. 漏洞升级

    • 不要满足于基本证明(POC),尝试构造完整攻击链
    • 研究目标环境特性(如云平台、容器编排)
  2. 工具开发

    • 自动化SSRF探测
    • 智能绕过payload生成
  3. 协议研究

    • 深入理解各URL解析器差异
    • 研究新兴协议的处理方式

八、资源与参考

  1. 学习资源

    • OWASP SSRF备忘单
    • Orange Tsai的Blackhat演讲
    • SSRF Bible (Payload集合)
  2. 实验环境

    • SSRF测试实验室:https://github.com/incredibleindishell/SSRF_Vulnerable_Lab
    • Webhook测试平台:https://webhook.site
  3. 漏洞报告范例

    • Hackerone公开SSRF报告
    • CVE详细分析报告

通过系统性地研究真实漏洞案例,开发者可以更好地理解SSRF的成因和防御方法,安全研究人员则能提高漏洞发现能力。记住,有效的防御需要结合网络层和应用层的多重保护措施。

SSRF漏洞深度分析与实战教学 一、SSRF概述 服务器端请求伪造(Server-Side Request Forgery, SSRF)是一种安全漏洞,攻击者能够利用服务器发起未经授权的内部请求。这种漏洞通常发生在应用程序从用户提供的URL获取数据时,没有对目标地址进行充分验证的情况下。 二、SSRF漏洞常见出现位置 1. 主要功能组件分布 根据对76个公开SSRF报告的分析,漏洞主要出现在以下功能组件中: | 功能组件 | 占比 | 说明 | |---------|------|------| | 文件上传 | 36% | 最常见的SSRF入口点 | | 代理服务 | 24% | 网页代理、转换服务等 | | Webhooks | 16% | 回调URL配置 | | 管理配置 | 11% | 特别是XML导入功能 | | 其他 | 13% | 各种接收URL的非标准功能 | 2. 高危文件类型 可能导致SSRF漏洞的文件类型包括: SVG (可包含外部资源引用) XML (特别是XXE导致的SSRF) JSON (某些解析器会获取外部URL) JPG/PNG (某些处理程序会获取外部元数据) 三、SSRF漏洞挖掘方法论 1. 目标定位策略 优先测试区域 : 任何文件上传功能 网页代理或URL转换服务 Webhook配置界面 数据导入/导出功能 次级测试区域 : 隐藏的API端点 HTML注入点(可能导致资源加载) 文档处理服务(如PDF生成) 2. 测试流程 基础探测 : 协议探测 : 绕过技术 : 使用进制/八进制IP表示: http://0177.0.0.1 域名重定向: http://xip.io → http://127.0.0.1.xip.io URL编码/双重编码 主机头注入 四、SSRF漏洞危害与利用 1. 基础危害 访问内部服务 端口扫描内网 读取本地文件(通过file协议) 2. 高级利用 云环境利用 : AWS元数据API: 169.254.169.254 GCP元数据: metadata.google.internal 获取临时凭证,接管云资源 漏洞链构造 : 结合Redis/Memcached未授权访问实现RCE 通过内部API实现权限提升 访问管理接口修改配置 绕过限制 : DNS重绑定攻击 利用CRLF注入构造恶意请求 利用URL解析差异 五、防御措施分析 1. 常见错误防御 黑名单过滤 : 容易被绕过(如 localtest.me 解析为127.0.0.1) 无法覆盖所有内部IP表示形式 仅过滤输入 : 忽略文件内容中的URL 不处理重定向 2. 推荐防御方案 白名单验证 : 只允许访问特定的域名和协议 验证DNS解析结果是否符合预期 网络层防护 : 限制服务器出站连接 禁止访问内部IP段 禁用危险协议(file, dict等) 应用层防护 : 使用固定解析库(避免解析差异) 禁用跟随重定向 设置连接超时 六、实战案例研究 案例1:SVG文件上传SSRF 漏洞场景 : 网站允许上传SVG作为头像,SVG处理器会加载外部资源 攻击载荷 : 防御措施 : 禁用SVG中的外部资源引用 使用CSP限制资源加载 案例2:Webhook配置SSRF 漏洞场景 : Webhook测试功能未验证回调URL 攻击载荷 : 防御措施 : 验证目标IP不在内网段 添加HMAC签名验证请求来源 七、进阶研究建议 漏洞升级 : 不要满足于基本证明(POC),尝试构造完整攻击链 研究目标环境特性(如云平台、容器编排) 工具开发 : 自动化SSRF探测 智能绕过payload生成 协议研究 : 深入理解各URL解析器差异 研究新兴协议的处理方式 八、资源与参考 学习资源 : OWASP SSRF备忘单 Orange Tsai的Blackhat演讲 SSRF Bible (Payload集合) 实验环境 : SSRF测试实验室:https://github.com/incredibleindishell/SSRF_ Vulnerable_ Lab Webhook测试平台:https://webhook.site 漏洞报告范例 : Hackerone公开SSRF报告 CVE详细分析报告 通过系统性地研究真实漏洞案例,开发者可以更好地理解SSRF的成因和防御方法,安全研究人员则能提高漏洞发现能力。记住,有效的防御需要结合网络层和应用层的多重保护措施。