Springboot之Actuator的渗透测试和漏洞利用
2022/2/13 23:14:54
本文主要是介绍Springboot之Actuator的渗透测试和漏洞利用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Springboot之actuator的常见漏洞利用
背景概述 ``` Spring的生态很优秀,而使用Spring Boot的开发者也比较多, Actuator是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信以及Web请求的详细信息等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。常常使用不当或者一些不经意的疏忽,可能造成信息泄露等严重的安全隐患。
实际挖掘 actuator 配置不当的漏洞分如下两步: 1. 判断和识别测试项目的web 应用采用的框架为 springboot 框架; 2. 尝试进行执行器端点路径的枚举(本文后面会有写到),并根据实际情况加以利用 ## 1.如何识别Spring Boot 一 通常有两个方法: 1.访问WEB页面,观察地址栏或者标签页前面的icon图标,是否为绿色小树叶(开发者没有修改的情况下,spring 框架默认为该图标) ![](https://www.www.zyiz.net/i/l/?n=22&i=blog/2414689/202202/2414689-20220213221520142-738522425.png) 2.构造错误的目录或者文件名等,让 springboot 框架产生默认的报错页面(如 开发者没有修改 springboot 应用的默认 400系列、50系列的报错页面,会报错如下,那么基本可以确定Spring Boot。(也被称为白标签报错页) ![](https://www.www.zyiz.net/i/l/?n=22&i=blog/2414689/202202/2414689-20220213221625100-15604554.png) 在实际中可以综合两个方法一起进行判断,比如先观察绿色树叶图标,尝试访问不同的目录,尝试在不同目录下400系列或500系列的报错,观察是否出现 Whitelabel Error Page 提示信息。 当确定web 的确使用了 springboot 框架后,就可以尝试进行第二步的端点路径的枚举了 二 端点路径的枚举,通过手动或者脚本来枚举测试网站的所有父目录和子目录,然后用脚本对前一步的每个目录进行探测,确定是否存在 actuator 执行端点的路径。 ```python actuator 提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要包括:
路径 | 描述 |
---|---|
/autoconfig | 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 |
/beans | 描述应用程序上下文里全部的Bean,以及它们的关系 |
/env | 获取全部环境属性 |
/env/{name} | 根据名称获取特定的环境属性值 |
/dump | 获取线程活动的快照 |
/health | 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供 |
/info | 获取应用程序的定制信息,这些信息由info打头的属性提供 |
/metrics | 报告各种应用程序度量信息,比如内存用量和HTTP请求计数 |
/shutdown | 关闭应用程序,要求endpoints.shutdown.enabled设置为true |
/trace | 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等) |
/heapdump | 返回一个GZip压缩的JVM堆dump |
有些程序员会自定义 /manage、/management 、项目 App 相关名称为 spring 根路径,需要注意 Spring Boot Actuator 1.x 版本默认内置路由的起始路径为 / ,2.x 版本则统一以 /actuator 为起始路径 Spring Boot Actuator 默认的内置路由名字,如 /env 有时候也会被程序员修改,比如修改成 /appenv
其中对寻找漏洞比较重要接口的有:
-
/env
、/actuator/env
GET 请求
/env
会直接泄露环境变量、内网地址、配置中的用户名等信息;当程序员的属性名命名不规范,例如 password 写成 psasword、pwd 时,会泄露密码明文;同时有一定概率可以通过 POST 请求
/env
接口设置一些属性,间接触发相关 RCE 漏洞;同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。 -
/refresh
、/actuator/refresh
POST 请求
/env
接口设置属性后,可同时配合 POST 请求/refresh
接口刷新属性变量来触发相关 RCE 漏洞。 -
/restart
、/actuator/restart
暴露出此接口的情况较少;可以配合 POST请求
/env
接口设置属性后,再 POST 请求/restart
接口重启应用来触发相关 RCE 漏洞。 -
/jolokia
、/actuator/jolokia
可以通过
/jolokia/list
接口寻找可以利用的 MBean,间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。 -
/trace
、/actuator/httptrace
一些 http 请求包访问跟踪信息,有可能在其中发现内网应用系统的一些请求信息详情;以及有效用户或管理员的 cookie、jwt token 等信息。
2.漏洞的利用
在上一步,如果确定发现了 actuator 的配置漏洞,一般而言,利用该漏洞外带的信息,就已经就可以记录漏洞写进报告了,但如果需要或者证明利用该漏洞可以继续挖掘其他漏洞,组合利用等等, 还需要进行其他操作,这里总结几个常见场景的利用方法
以下几个漏洞属于配置不当引起路由暴露。
1.读取其他用户的认证字段获取敏感信息
可以直接尝试访问网站目录下的/trace 路径,读取用户认证字段信息,比如在 trace 路径下,会有用户的敏感信息,可能包括 authorization(token、JWT、cookie)等字段,那么就可以利用泄露的认证信息,登陆自己的账户后,替换 JWT,token 字段继续获取其他用户的信息,这些信息足以影响其他用户,
2.数据库账户密码泄露
Actuator作为Spring Boot提供的对应用系统的监控和管理的集成,会监控 mysql之类的数据库服务,那么通过监控信息有可能拿下 数据库;直接通过访问其/env 路径获取数据库配置信息,比如数据库的用户名及密码
3.外带明文
直接访问/actuator/,/actuator/env这些执行器端点路径,可能会看到大量接口和敏感信息,如mysql安装路径等等,其中有脱敏之后的password。
4.heapdump后台账号密码
尝试访问网站的/actuator/heapdump接口,下载返回的GZip 压缩 堆转储文件,使用通过VisualVM/Android studio 加载,通过泄露站点的内存信息,查看到后台账号信息和数据库账号
5.git 项目地址泄露
一般在在/health 路径,比如直接去访问项目的 health 路径,可探测到站点 git 项目地址,查看源码:
3.安全措施
引入 security 依赖,打开安全限制并进行身份验证;同时设置单独的 Actuator 管理端口并配置不对外网开放。
比如,Spring Boot提供了安全限制功能。比如要禁用/env接口,则可设置如下:
endpoints.env.enabled= false
Spring Boot 相关漏洞学习资料,利用方法和技巧合集,黑盒安全评估,非常详细 参考地址:https://github.com/LandGrey/SpringBootVulExploit
这篇关于Springboot之Actuator的渗透测试和漏洞利用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门