文章目录
SSRF漏洞的原理、利用方式与防范措施
一、原理
1. 定义与触发条件
SSRF(Server-Side Request Forgery 服务端请求伪造) 的本质是服务器信任了用户提供的目标地址,并代替其发起非预期请求。核心触发条件包括:
- 外部请求功能:应用需具备从URL获取数据的能力,如图片加载、网页分享、在线翻译(如百度、有道)。
- 目标地址无过滤:未校验用户输入的URL合法性,允许内网IP(如
192.168.0.1
)或危险协议(如file://
)。 - 协议支持广泛:服务器支持
gopher://
、dict://
等协议,可构造复杂攻击载荷。
2. 攻击链流程图
示例:Azure健康机器人漏洞(CVE-2024-38109)通过HTTP重定向绕过防护,访问内部元数据服务。
二、利用方式
1. 利用手法与分类
(1) 内网探测与协议滥用
- 端口扫描:利用
dict://
协议探测Redis(dict://192.168.1.1:6379
),根据响应判断服务状态。 - 文件读取:通过
file://
协议读取/etc/passwd
等敏感文件。 - Redis未授权攻击:使用
gopher://
发送命令写入定时任务(需URL编码)。
(2) 绕过技巧
- 进制转换:IP转为八进制(
0177.0.0.1
)或十进制(2130706433
)。 - 短链与302跳转:通过URL短链或中间页面跳转隐藏真实目标地址。
- 封闭字符绕过:使用Unicode封闭字符(如
ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ
)。 - PDF嵌入攻击:上传含恶意链接的PDF文件,触发后端解析并请求内网服务(如AWS元数据)。
- HTTP重定向绕过:构造中间页面返回302跳转,绕过目标地址黑名单(如Azure漏洞)。
(3) 自动化工具辅助
- AutoSSRF:针对GET参数智能模糊测试,动态生成Payload。
- BurpSuite插件:通过Collaborator检测SSRF,自动替换URL为探测载荷。
2. 真实案例
- CVE-2024-38109(Azure健康机器人)
- 漏洞:数据连接功能未校验重定向,攻击者获取跨租户订阅列表。
- 影响:泄露数百个客户资源,触发横向攻击风险。
- CVE-2025-34028(Commvault)
- 漏洞:
deployWebpackage.do
接口SSRF导致远程代码执行。 - 利用链:SSRF → 访问内部服务 → 控制服务器。
- 漏洞:
- Weblogic SSRF(CVE-2014-4210)
- 漏洞:
uddiexplorer
组件未过滤URL参数,探测内网Redis端口。
- 漏洞:
- Redis未授权访问组合攻击
- 漏洞:通过SSRF+Redis未授权访问写入定时任务反弹Shell。
三、防范措施
1. 输入校验与协议管控
-
黑名单过滤:拦截内网IP段(
10.0.0.0/8
、192.168.0.0/16
)和危险协议(file://
、gopher://
)。 -
协议白名单:仅允许
HTTP/HTTPS
,禁用其他协议(PHP示例):$url = $_POST['url']; if (!preg_match('/^https?:\/\//i', $url)) { die("Invalid protocol"); }
2. 请求过程加固
-
禁用重定向:防止跳转到非预期地址(PHP示例):
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
-
内容类型校验:仅允许预期数据类型(如图像):
if not response.headers.get('Content-Type', '').startswith('image/'): raise ValueError("Invalid content type")
3. 网络层与架构设计
- 出站流量限制:通过防火墙禁止服务器访问非必要内网服务。
- 服务隔离:将外部请求功能部署在DMZ区域,与核心服务分离。
4. 安全开发实践
- 使用安全库:如Java的
ESAPI.validator()
或Python的requests
库(自动处理URL编码)。 - 日志监控:记录所有外部请求,报警异常行为(如频繁访问
169.254.169.254
)。
四、结语与拓展
漏洞本质与防御策略
SSRF的核心是**“服务器过度信任用户输入”**,需通过输入校验、协议限制、网络隔离构建纵深防御体系。
漏洞自查清单
- 是否禁用
file://
和gopher://
协议? - 是否对返回内容进行MIME类型校验?
- 是否限制请求端口为80、443等常见端口?
- 是否启用网络层出站流量控制?
思考题
- 为何
gopher://
协议威胁最大?
答案:支持多行请求构造,可模拟Redis、FastCGI等协议交互,实现RCE。
参考资源
- OWASP防御指南:Server-Side Request Forgery Prevention Cheat Sheet。
- 漏洞数据库:
- CVE-2024-38109(Azure健康机器人)
- CVE-2025-34028(Commvault RCE)
- 工具推荐: