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. 目标定位策略
-
优先测试区域:
- 任何文件上传功能
- 网页代理或URL转换服务
- Webhook配置界面
- 数据导入/导出功能
-
次级测试区域:
- 隐藏的API端点
- HTML注入点(可能导致资源加载)
- 文档处理服务(如PDF生成)
2. 测试流程
-
基础探测:
http://localhost http://127.0.0.1 http://169.254.169.254 (AWS元数据服务) -
协议探测:
file:///etc/passwd dict://localhost:22 ftp://attacker.com -
绕过技术:
- 使用进制/八进制IP表示:
http://0177.0.0.1 - 域名重定向:
http://xip.io → http://127.0.0.1.xip.io - URL编码/双重编码
- 主机头注入
- 使用进制/八进制IP表示:
四、SSRF漏洞危害与利用
1. 基础危害
- 访问内部服务
- 端口扫描内网
- 读取本地文件(通过file协议)
2. 高级利用
-
云环境利用:
- AWS元数据API:
169.254.169.254 - GCP元数据:
metadata.google.internal - 获取临时凭证,接管云资源
- AWS元数据API:
-
漏洞链构造:
- 结合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 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签名验证请求来源
七、进阶研究建议
-
漏洞升级:
- 不要满足于基本证明(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的成因和防御方法,安全研究人员则能提高漏洞发现能力。记住,有效的防御需要结合网络层和应用层的多重保护措施。