Springboot之actuator配置不当漏洞(autoconfig、configprops、beans、dump、env、health、info、mappings、metrics、trace)
前言
Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。Actuator 配置不当导致应用系统监控信息泄露对应用系统及其用户的危害是巨大的,然而关于 springboot 框架下 actuator 配置不当的漏洞利用分析文章很少,目前笔者只在先知社区看到有一篇介绍 actuator 的安全文章,于是想在这里,分享下笔者在渗透测试过程中遇到的 actuator 配置不当的发现及利用过程,如有分析不正确的地方,还请各位大佬轻喷~
Actuator 简介
如上所言,actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要有:
Http 方法 | 路径 | 描述 |
---|---|---|
get | /autoconfig | 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 |
get | /configprops | 描述配置属性(包含默认值)如何注入 Bean |
get | /beans | 描述应用程序上下文里全部的 Bean,以及它们的关系 |
get | /dump | 获取线程活动的快照 |
get | /env | 获取全部环境属性 |
get | /env/{name} | 根据名称获取特定的环境属性值 |
get | /health | 报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供 |
get | /info | 获取应用程序的定制信息,这些信息由 info 打头的属性提供 |
get | /mappings | 描述全部的 URI 路径,以及它们和控制器(包含 Actuator 端点)的映射关系 |
get | /metrics | 报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数 |
get | /metrics/{name} | 报告指定名称的应用程序度量值 |
post | /shutdown | 关闭应用程序,要求 endpoints.shutdown.enabled 设置为 true(默认为 false) |
get | /trace | 提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等) |
get | /heapdump | 后台用户账号密码泄露 |
get | /httptrace | 会记录100个最近请求包 |
get | /restart | 重新启动应用程序 |
get | /logfile | 输出日志内容 |
漏洞发现
一般来说,笔者挖掘 actuator 配置不当的漏洞分如下两步:1. 识别当前 web 应用使用的框架为 springboot 框架;2. 枚举执行器端点路径;下面针对这两步结合笔者漏洞挖掘中遇到的实例具体来说说。
1. 识别当前 web 应用使用的框架为 springboot 框架。主要有两个方法判断:
①通过 web 应用程序网页标签的图标(favicon.ico);如果 web 应用开发者没有修改 springboot web 应用的默认图标,那么进入应用首页后可以看到如下默认的绿色小图标:
该绿色小图标是 spring 框架下的一个默认图标,尽管不能百分百就此图标确认当前 web 应用使用的是 springboot 框架,但是基本上也能百分之八十确认该 web 应用是使用 springboot 框架开发的了(毕竟 springboot 框架确实是太流行了)。
②通过 springboot 框架默认报错页面;如果 web 应用开发者没有修改 springboot web 应用的默认 4xx、5xx 报错页面,那么当 web 应用程序出现 4xx、5xx 错误时,会报错如下(此处仅以 404 报错页面为例):
当出现如上报错页面,就能确定当前 web 应用是使用了 springboot 框架的。
那么综合以上两个途径来判断当前 web 应用是否是 springboot 框架,就是通过访问不同的目录,看是否有小绿叶图标,然后就是想办法在不同目录下触发应用程序的 4xx 或 5xx 错误,看是否有 Whitelabel Error Page 报错。
2. 枚举执行器端点路径。这个其实很简单,在确认当前 web 站点是 springboot 框架后,枚举当前站点的所有一级、二级甚至三级目录,然后写脚本对每个目录进行探测,查看目录下是否存在 actuator 执行端点路径即可。(本来想写个比较通用的探测脚本的,现在只有延期了.. 写完之后放出来)
漏洞利用
通过如上步骤,如果你发现了 actuator 的配置不当漏洞,那就要恭喜你啦。不过,尽管这些监控信息的泄露已经足够高危了,有时候碰到一些比较严格的厂商,需要你证明一下这些监控信息的具体危害,或者你想要将危害等级提升到严重,或者想要通过这些监控信息进一步挖掘其他漏洞,该怎么利用呢?笔者通过自身的踩坑经历,总结了如下几个点来尽可能最大化的利用该漏洞:
①认证字段的获取以证明可影响其他用户;这个主要通过访问/trace 路径获取用户认证字段信息,比如如下站点存在 actuator 配置不当漏洞,在其 trace 路径下,除了记录有基本的 HTTP 请求信息(时间戳、HTTP 头等),还有用户 token、cookie 字段:
trace 路径:
用户认证字段泄露:
通过替换 token 字段可获取其他用户的信息:
②数据库账户密码泄露;由于 actuator 会监控站点 mysql、mangodb 之类的数据库服务,所以通过监控信息有时可以拿下 mysql、mangodb 数据库;这个主要通过/env 路径获取这些服务的配置信息,比如如下站点存在 actuator 配置不当漏洞,通过其/env 路径,可获得 mysql、mangodb 的用户名及密码:
mangodb 及 mysql 都可直连,此处以 mysql 为例:
该漏洞详情请见https://dvpnet.io/info/detail/id/814,是笔者去年在 dvp 平台提交的一个漏洞。一旦数据库外连成功,漏洞分分钟高危变严重啊。
③git 项目地址泄露;这个一般是在/health 路径,比如如下站点,访问其 health 路径可探测到站点 git 项目地址:
直接访问 git 项目地址,可拿下源码:
④后台用户账号密码泄露;这个一般是在/heapdump 路径下,访问/heapdump 路径,返回 GZip 压缩 hprof 堆转储文件。在 Android studio 打开,会泄露站点内存信息,很多时候会包含后台用户的账号密码(包含漏洞的图片暂时没得,大家记住思路就好了..),通过泄露的账号密码,然后进入后台一番轰炸也不错的。
安全措施
引入 security 依赖,打开安全限制并进行身份验证;同时设置单独的 Actuator 管理端口并配置不对外网开放。详情请见先知社区https://xz.aliyun.com/t/2233
参考文献
1.https://xz.aliyun.com/t/2233
2.https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready
3.https://blog.csdn.net/qq_20325039/article/details/79822141
Springboot之actuator配置不当漏洞(autoconfig、configprops、beans、dump、env、health、info、mappings、metrics、trace)相关推荐
- Springboot之actuator配置不当漏洞RCE(jolokia)
日穿扫描扫到一个spring boot actuator 可以看到有jolokia这个端点,再看下jolokia/list,存在type=MBeanFactory 关键字 可以使用jolokia-re ...
- Springboot之Actuator信息泄露漏洞利用
0x01 什么是Actuator Spring Boot Actuator 模块提供了健康检查,审计,指标收集,HTTP 跟踪等,是帮助我们监控和管理Spring Boot 应用的模块.这个模块采集应 ...
- Springboot之Actuato介绍及漏洞
Spring Boot Actuator 可以帮助你监控和管理 Spring Boot 应用,比如健康检查.审计.统计和 HTTP 追踪等.所有的这些特性可以通过 JMX 或者 HTTP endpoi ...
- SpringBoot集成Actuator端点配置
1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...
- php目录遍历漏洞复现,nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现...
nginx解析漏洞,配置不当,目录遍历漏洞复现 1.Ubuntu14.04安装nginx-php5-fpm 安装了nginx,需要安装以下依赖 sudo apt-get install libpcre ...
- Redis 配置不当致使 root 被提权漏洞
漏洞描述 Redis 服务因配置不当,可被攻击者恶意利用.黑客借助 Redis 内置命令,可将现有数据恶意清空:如果 Redis 以 root 身份运行,黑客可往服务器上写入 SSH 公钥文件,直接登 ...
- Redis配置不当致使root被提权漏洞
Redis配置不当致使root被提权漏洞 Dear all~ 最近Redis服务被曝出因配置不当,可能造成数据库被恶意清空,或被黑客利用写入后门文件造成进一步入侵,请关注! 一.漏洞发布日期 2015 ...
- 9月29 Redis配置不当致使root被提权漏洞 | Found a swap file by the name swp
1.Redis配置不当致使root被提权漏洞 建议修复方案(需要重启redis才能生效) 1.绑定需要访问数据库的IP 修改 redis.conf 中的 "bind 127.0.0.1&qu ...
- springboot之Actuator
1.Actuator 介绍 Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看.统计等. Act ...
最新文章
- Linux Centos 7 安装配置nginx
- 持续集成篇:jenkins搭建和job运行
- html在百度地图显示位置,在百度地图显示当前位置.html
- 浅谈电商网站开发中用户会话管理机制的设计和实现原理
- Wpf Binding.Path设置
- 建议收藏丨sql行转列的一千种写法!!
- 【零基础学Java】—成员变量和局部变量(九)
- 10-9 重要的内置函数(zip、filter、map、sorted)
- 【2022年的STM32】 02-STM32总览
- 职工工资管理系统c语言,C++实现企业职工工资管理系统
- 安装win10虚拟机遇到的坑
- 如何在网页上下载视频
- 【转载】大龄码农的新西兰移民之路
- [Vue warn]: You may have an infinite update loop in watcher with express
- 龙芯1c300b开发语言,龙芯 1C0300B 主控芯片已成功进入激光打印机市场
- IC笔试:​2022小米数字芯片提前批笔试
- MFC 右键菜单呼出
- 交换瓶子(蓝桥杯真题)
- 「企业安全架构」EA874:信息安全架构
- 西门子PLC协议-S7COMM
热门文章
- 人类遗传变异神库 | ClinVar数据库详解
- 代码分析 | 单细胞转录组Normalization详解
- R 学习 - 箱线图
- Snagit好用吗?Snagit 2022最全快捷键指南
- File Hunter for mac - 丢失文件查找AE脚本
- fcpx插件:50组唯美梦幻棱镜光晕效果预设MotionVFXmPrism
- python语言程序设计编程题_Python语言程序设计(测试练习题)
- php输出excel表格乱码和第一个0不显示的解决方法(详细)
- php采集绕过cloudflare,三行代码带你绕过cloudflare反爬
- 千锋教育python全集_千锋python+人工智能最新视频教程(大全集)