攻击原理与信任模型
SSRF 的本质是信任边界的错位。应用服务器通常被设计为可以发起出站网络请求——从外部 API 获取数据、下载图片、处理 Webhook 回调。当攻击者能够控制服务端发起请求的目标 URL 时,这种「为业务而生的网络能力」就变成了攻击武器。
关键区别在于「谁在请求」。SSRF 发出的请求来自应用服务器,而非受害者浏览器。因此:
- 请求源 IP 是应用服务器,在企业网络中通常属于受信任的内网 IP,可以绕过基于 IP 的访问控制列表(ACL)。
- 请求可携带服务器的网络能力,包括访问内网数据库(如
http://10.0.1.5:3306)、管理面板(如http://admin.internal)、消息队列、NoSQL 数据存储、CI/CD 系统等。 - 请求可携带云环境的 IAM 角色凭证,当服务器运行在 AWS/阿里云/GCP/腾讯云上时,发往元数据服务的任何请求都返回与该虚拟机绑定的临时凭证。
SSRF 是 OWASP Top 10 2021 中唯一一个没有数百个 CWE 映射入口的新增类别——它仅映射 CWE-918,但危险程度足以独立成为 A10。
云环境元数据攻击
在传统数据中心,SSRF 的风险主要局限于内网信息探测和未授权 API 调用。但云原生环境的元数据服务改变了这一格局——SSRF 可直接导致云账户的完整接管。
AWS EC2 元数据服务(IMDS):运行在链路本地地址 169.254.169.254。IMDSv1 无需任何 Token,一个简单的 GET 请求即可返回当前实例绑定的 IAM 角色临时凭证:
GET /latest/meta-data/iam/security-credentials/<role-name>返回 AccessKeyId、SecretAccessKey、Token(有效期通常 1-6 小时)。