服务器端请求伪造(SSRF)
服务器端请求伪造(Server-Side Request Forgery,SSRF)是一种 Web 安全漏洞,攻击者通过它滥用服务器“代为获取远程资源”的功能,诱使服务器向攻击者指定的目的地发送请求[^c1]。其标准弱点编号为 CWE-918,核心定义是:Web 服务器接收来自上游组件的 URL 或类似请求并获取其内容,却没有充分确保请求发往预期目的地[^c2]。当应用在获取远程资源时未验证用户提供的网址,就会产生这类漏洞[^c4]。
SSRF 的危险来自服务器的网络位置。服务器通常位于受信任的内网,防火墙允许它访问内部服务,访问控制也往往默认“能连到这个端点就属于内部可信来源”。攻击者因此可以把服务器当作跳板,访问本不可见的管理后台、数据库、消息队列与内部 API,或读取云实例元数据中的临时凭据。在云环境中,公共暴露、过度权限与敏感数据邻近三者叠加,单次 SSRF 就可能成为凭据窃取、横向移动与数据外泄的入口[^c3]。
SSRF 的利用形式从直接读取响应的基础型,到只能依赖带外交互、时间差异或状态码差异的盲型;可利用的协议也从 HTTP/HTTPS 延伸到 file://、gopher://、dict:// 等,使漏洞可能升级为任意文件读取、任意 TCP 数据投递甚至远程代码执行。常见目标包括内网管理面板、Redis、Elasticsearch、Docker API、FastCGI 与各云厂商的元数据服务。
防御 SSRF 需要纵深防御。应用层应只接受主机名或 IP 而非完整 URL,使用正向允许列表,并在 DNS 解析后校验实际连接地址;仅靠域名允许列表无法阻止 DNS 重绑定[^c6],而黑名单容易被绕过,应优先使用允许列表[^c5]。网络层应默认拒绝不必要的出站流量,阻断私网、回环、链路本地与元数据地址;默认拒绝的出站规则能把成功的 SSRF 变成一条死路[^c7]。云环境还应启用 IMDSv2、最小化实例角色权限,并监控异常的出站请求与凭据使用。