SSRF 漏洞
面试官想考什么
- 是否理解 SSRF 的本质。
- 是否知道常见触发场景。
- 是否知道常用协议和绕过方式。
- 是否知道 SSRF 的危害和修复。
一句话定义
1
| SSRF 是服务端请求伪造,攻击者可以控制服务端发起请求的目标地址,让服务器代替攻击者访问内部或外部资源。
|
产生原因
- 后端根据用户输入的 URL 发起请求。
- 没有严格校验协议、域名、IP 和跳转地址。
- 没有限制访问内网、localhost、云 metadata。
常见场景
- URL 预览。
- 图片抓取。
- 远程下载。
- Webhook。
- PDF 生成。
- 在线截图。
- 从 URL 导入文件。
- 头像远程加载。
常用协议
| 协议 |
用途 |
| http/https |
访问内网 Web 服务 |
| file |
读取本地文件,取决于后端是否支持 |
| gopher |
构造原始 TCP 请求,历史上常用于攻击 Redis 等服务 |
| dict |
探测端口或特定服务 |
| ftp |
访问 FTP 服务 |
| ldap |
特定环境下可用于内网服务请求 |
测试方法
1
| 我会先找可控 URL 参数,用 DNSLog 或自己的 VPS 验证服务端是否发起请求。如果能收到请求,再测试 127.0.0.1、localhost、内网 IP、云 metadata 地址和常见内网端口,判断是否能访问内部资源。
|
黑名单绕过
127.0.0.1 变形。
localhost。
0.0.0.0。
- IPv6:
[::1]。
- 十进制 IP。
- 八进制 IP。
- 十六进制 IP。
- 短地址。
@ 符号绕过。
- 302 跳转。
- DNS rebinding。
- 白名单子域名绕过。
- 大小写和 URL 编码。
危害
- 探测内网主机和端口。
- 访问内网管理后台。
- 读取云 metadata。
- 攻击 Redis、Elasticsearch 等内网服务。
- 绕过外网访问限制。
修复方案
- 做 URL 白名单。
- 只允许 http/https。
- 禁止访问内网 IP、localhost、保留地址段。
- 解析域名后校验真实 IP。
- 禁止自动跳转,或跳转后重新校验。
- 屏蔽云 metadata 地址。
- 设置超时和响应大小限制。
- 记录日志和告警。
面试标准回答
1 2 3 4 5 6 7
| SSRF 是服务端请求伪造,核心是攻击者能控制服务端请求的目标地址,让服务器代替攻击者访问内部或外部资源。
它常见于 URL 预览、图片抓取、远程下载、Webhook、PDF 生成等功能。测试时我会先用 DNSLog 或自己的服务器确认服务端是否发起请求,再测试 localhost、127.0.0.1、内网 IP、云 metadata 和常见内网端口。
常见利用协议包括 http/https、file、gopher、dict、ftp 等。绕过方面会看 IP 变形、localhost 变形、IPv6、302 跳转、DNS rebinding、@ 符号和白名单绕过。
修复上主要是白名单限制、禁止访问内网和保留地址段、限制协议、校验跳转后的真实地址,并做好超时和日志监控。
|
Author:
rowen
Permalink:
https://forkmmat.github.io/2026/06/09/04-SSRF%E6%BC%8F%E6%B4%9E/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?