SpringBoot应用监控Actuator使用的安全隐患,一不小心线上就中招了,分分钟就能搞死你的线上服务,如果是eureka,则会发现eureka不知觉的就把你剔除了;
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 头等) |
漏洞利用
通过如上步骤,如果你发现了 actuator 的配置不当漏洞,那就要恭喜你啦。不过,尽管这些监控信息的泄露已经足够高危了,有时候碰到一些比较严格的厂商,需要你证明一下这些监控信息的具体危害,或者你想要将危害等级提升到严重,或者想要通过这些监控信息进一步挖掘其他漏洞,该怎么利用呢?自身的踩坑经历;
比如:这个一般是在/heapdump ,/trace /restart .....路径下,以访问/heapdump 路径,返回 GZip 压缩 hprof 堆转储文件。在 Android studio 打开,会泄露站点内存信息,很多时候会包含后台用户的账号密码(包含漏洞的图片暂时没得,大家记住思路就好了..),通过泄露的账号密码,然后进入后台一番轰炸也不错的。
其他方面的安全大家可以根据上面的接口信息里可以细品;
安全措施
引入 security 依赖,打开安全限制并进行身份验证;同时设置单独的 Actuator 管理端口并配置不对外网开放。详情请见先知社区1. https://xz.aliyun.com/t/2233