服务端请求伪造漏洞是网络安全领域的一类软件弱点,指网页应用或接口在获取远程资源时未对用户提供的地址做充分校验,从而使攻击者能够迫使服务器向非预期的目标发出请求。由于该请求由服务器自身发出并带有服务器的身份,它可以穿过防火墙、虚拟专用网或网络访问控制规则的阻挡,触达外部本不可达的内网服务、本机服务或云服务元数据接口。该漏洞被归纳为 CWE-918,并列入 OWASP 十大安全风险。
定义
服务端请求伪造漏洞对应的英文名称为 Server-Side Request Forgery,通常缩写为 SSRF。按照通用弱点枚举的界定,它是指 Web 服务器从上游组件收到一个地址或类似请求,并据此去获取该地址的内容,却没有充分保证请求被送往预期的目的地。OWASP 的表述与之相近:只要网页应用在获取远端资源时没有验证用户提供的网址,就可能出现这一缺陷[1]。
这种现象之所以被单独归为一类,是因为请求发起方是受信任的服务器。攻击者本身可能无法直接访问某一地址,但服务器可以,于是服务器在事实上被当成了代理。在通用弱点枚举体系中,该漏洞编号为 CWE-918,属于基础层级的弱点条目,并与输入校验不当等弱点相互关联。
原理
该漏洞的形成需要一个前提和一个触发条件。前提是应用本身具备向外发起请求的功能,例如抓取网址内容、生成链接预览、加载远程图片、调用回调地址或导入外部数据;触发条件是这些功能的目标地址可以被使用者影响,而服务端又没有对地址、协议或端口做严格限制[2]。当使用者提交的地址被直接拼进请求时,服务端代码就会按照这个地址去读取数据[3]。
该弱点并不限于超文本传输协议。若应用自身执行第二次请求,还可能改用文件、文件传输、简单邮件传输等协议,或使用 file、phar、gopher、dict 等地址方案,从而触达非网页类服务。目标地址的常见落点包括内网主机、监听在本机回环地址上的服务,以及云厂商提供的元数据接口。
按响应是否回到攻击者手中,可分为回显型与非回显型。回显型会把服务器请求到的内容直接返回给攻击者;非回显型不返回内容,攻击者只能借助端口探测结果、域名系统日志或响应耗时差异等侧面信息判断请求是否送达[4]。
flowchart LR
A[攻击者] -->|提交可控地址| B[存在缺陷的服务器]
B -->|以服务器身份发起请求| C[内网服务 / 本机服务 / 云元数据接口]
C -->|响应内容或时序差异| B
B -->|回显型:返回内容| A
发展历程
该攻击方式在 2008 年首次被描述,此后在 2011 年底针对 XML 外部实体的研究中被重新提出,2012 年又有研究者以跨站端口攻击的名义对其加以讨论,同年该主题进入当年度十大 Web 攻击技术评选的前列[5]。
随着网页应用越来越多地提供由服务端抓取网址的便利功能,这类缺陷的出现频率上升;同时由于云服务与系统架构日趋复杂,其严重程度也在提高[1]。2021 年发布的 OWASP 十大安全风险中,服务端请求伪造作为一个由行业调查结果增补的新类别被单独列入,对应编号为 A10[1]。
2025 年发布的 OWASP 十大安全风险中,CWE-918 被归入失效的访问控制这一类别,与向未授权主体暴露敏感信息、跨站请求伪造等弱点并列[6]。针对云元数据接口的探测也已成为常见行为,出现过以统一资源定位符参数指向实例凭据目录的批量扫描请求[7]。
应用
该缺陷的实际影响取决于受缺陷影响的功能能够触达什么资源。常见危害包括读取服务器上的敏感文件与配置、探测内网主机的存活状态和端口开放情况、对内网应用发起攻击,以及造成服务不可用[4]。在云环境中,风险尤为突出,因为实例元数据接口通常在内网中以明文 HTTP 方式可达,一旦被访问,其中存放的凭据就可能外泄[2]。
从引入位置看,风险往往集中在若干典型功能上:回调地址配置、网址导入与链接预览、图片代理与缩略图生成、数据库的 HTTP 接口、内部接口调用,以及接收网址的文档渲染服务[8]。这些功能的共同点是把使用者提供的目标地址当成了可信目的地[2]。
该缺陷还常与其他弱点组合,形成更复杂的攻击链,例如经由它访问存在命令执行缺陷的内网服务、借助文件协议读取敏感文件,或访问内部缓存与队列服务[9]。在接口安全领域,它被列为最关键的接口风险之一。
局限
该漏洞的严重程度并非固定,而是取决于受缺陷影响的功能可以到达哪些资产,以及服务器响应是否对攻击者可见,因此不同实例的风险评级可能相差很大。若受缺陷影响的接口本身无权访问有价值的内部资源,或内部服务已实施网络隔离,其可利用空间会明显缩小[10]。
在防护一侧,单点措施往往不足。仅对域名做白名单并不能阻止域名系统重绑定,还需要在解析后校验目的地址、并在连接时确保客户端只连向已校验的地址,校验与连接之间若发生第二次未经检查的域名解析,就可能被绕过[10]。仅依靠拒绝清单或正则表达式同样不可靠,攻击者拥有大量载荷、工具与技巧可以绕过[1]。
检测环节也存在盲区。静态扫描可以识别出从地址类输入流向请求客户端的代码模式,但难以证明校验是否充分;动态扫描依赖带外回调来确认,能够覆盖的只是它已知需要测试的端点,而出现在后台任务、定时导入等不显眼路径上的缺陷容易遗漏[11]。非回显型场景下,由于响应不返回,只能依靠时序或带外信道间接判断,确认难度更高[2]。
参见
参考资料
- A10:2021 – Server-Side Request Forgery (SSRF) [引用日期2026-10-14]
- SSRF Attack in APIs | OWASP API7:2023 Explained [引用日期2026-10-14]
- Server Side Request Forgery [引用日期2026-10-14]
- rapid7.com 上的网页 [引用日期2026-10-14]
- About us [引用日期2026-10-14]
- A01:2025 失效的访问控制 [引用日期2026-10-14]
- sans.edu 上的网页 [引用日期2026-10-14]
- SSRF Vulnerability: How to Find & Fix | Offensive360 [引用日期2026-10-14]
- 016_Web安全实战指南:服务器端请求伪造(SSRF)漏洞原理、攻击技术与全面防御策略 [引用日期2026-10-14]
- Server-Side Request Forgery Prevention Cheat Sheet¶ [引用日期2026-10-14]
- owasp-ssrf-a10-developer-guide [引用日期2026-10-14]