【渗透测试】SSRF漏洞的原理、利用方式与防范措施

SSRF漏洞的原理、利用方式与防范措施


一、原理

1. 定义与触发条件

SSRF(Server-Side Request Forgery 服务端请求伪造) 的本质是服务器信任了用户提供的目标地址,并代替其发起非预期请求。核心触发条件包括:

  • 外部请求功能:应用需具备从URL获取数据的能力,如图片加载、网页分享、在线翻译(如百度、有道)。
  • 目标地址无过滤:未校验用户输入的URL合法性,允许内网IP(如192.168.0.1)或危险协议(如file://)。
  • 协议支持广泛:服务器支持gopher://dict://等协议,可构造复杂攻击载荷。

2. 攻击链流程图

成功
失败
攻击者提交恶意URL
服务器解析URL并发起请求
目标服务响应
获取内网数据/执行命令/读取文件
返回错误信息

示例: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. 真实案例

  1. CVE-2024-38109(Azure健康机器人)
    • 漏洞:数据连接功能未校验重定向,攻击者获取跨租户订阅列表。
    • 影响:泄露数百个客户资源,触发横向攻击风险。
  2. CVE-2025-34028(Commvault)
    • 漏洞deployWebpackage.do接口SSRF导致远程代码执行。
    • 利用链:SSRF → 访问内部服务 → 控制服务器。
  3. Weblogic SSRF(CVE-2014-4210)
    • 漏洞uddiexplorer组件未过滤URL参数,探测内网Redis端口。
  4. Redis未授权访问组合攻击
    • 漏洞:通过SSRF+Redis未授权访问写入定时任务反弹Shell。

三、防范措施

1. 输入校验与协议管控

  • 黑名单过滤:拦截内网IP段(10.0.0.0/8192.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的核心是**“服务器过度信任用户输入”**,需通过输入校验、协议限制、网络隔离构建纵深防御体系。

漏洞自查清单

  1. 是否禁用file://gopher://协议?
  2. 是否对返回内容进行MIME类型校验?
  3. 是否限制请求端口为80、443等常见端口?
  4. 是否启用网络层出站流量控制?

思考题

  • 为何gopher://协议威胁最大?
    答案:支持多行请求构造,可模拟Redis、FastCGI等协议交互,实现RCE。

参考资源

  1. OWASP防御指南Server-Side Request Forgery Prevention Cheat Sheet
  2. 漏洞数据库
  3. 工具推荐
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值