Spring Boot Actuator 可以帮助你监控和管理 Spring Boot 应用,比如健康检查、审计、统计和 HTTP 追踪等。所有的这些特性可以通过 JMX 或者 HTTP endpoints 来获得。Actuator 同时还可以与外部应用监控系统整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic 等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用。Actuator 使用 Micrometer 来整合上面提到的外部应用监控系统。这使得只要通过非常小的配置就可以集成任何应用监控系统。
<!--监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
使用 Actuator Endpoints 来监控应用
Actuator 创建了所谓的 endpoint 来暴露 HTTP 或者 JMX 来监控和管理应用。举个例子,有一个叫 / health 的 endpoint,提供了关于应用健康的基础信息。/metrics endpoints 展示了几个有用的度量信息,比如 JVM 内存使用情况、系统 CPU 使用情况、打开的文件等等。/loggers endpoint 展示了应用的日志和可以让你在运行时改变日志等级。值得注意的是,每一给 actuator endpoint 可以被显式的打开和关闭。此外,这些 endpoints 也需要通过 HTTP 或者 JMX 暴露出来,使得它们能被远程进入。
]
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: '*'
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
作者:hhcccchh
来源链接:
https://blog.csdn.net/hhcccchh/article/details/103928215/