Spring boot带来的信息泄露

一、什么是Actuator

Spring Boot Actuators 模块端点信息官方文档:

Spring Boot Actuator Web API Documentation

Spring Boot Actuator 模块提供了健康检查,审计,指标收集,HTTP 跟踪等,是帮助我们监控和管理Spring Boot 应用的模块。这个模块采集应用的内部信息,展现给外部模块,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信以及Web请求的详细信息等。

如果Actuator使用,可能造成信息泄露等严重的安全隐患(外部人员非授权访问Actuator端点)。其中heapdump作为Actuator组件最为危险的Web端点,heapdump因未授权访问被恶意人员获取后进行分析可进一步获取敏感信息。

注意:

SpringBoot 1.x 和 2.x 的 Actuator模块设置有差别,访问功能的路径也有差别,但现在多使用的SpringBoot版本为2.x,这篇文章只讲SpringBoo 2.x Actuator模块带来的信息泄露。

Actuator 其提供的端点分为两类:

1.原生端点

请求方法

端点

描述

GET

/actuator

查看有哪些 Actuator端点是开放的。

GET

/actuator/auditevent

auditevents端点提供有关应用程序审计事件的信息。

GET

/actuator/beans

beans端点提供有关应用程序 bean 的信息。

GET

/actuator/conditions

conditions端点提供有关配置和自动配置类条件评估的信息。

GET

/actuator/configprops

configprops端点提供有关应用程序@ConfigurationPropertiesbean的信息。

GET

/actuator/env 

查看全部环境属性,可以看到 SpringBoot 载入哪些 properties,以及 properties 的值(会自动用*替换 key、password、secret 等关键字的 properties 的值)。

GET

/actuator/flyway

flyway端点提供有关 Flyway 执行的数据库迁移的信息。

GET

/actuator/health 

端点提供有关应用程序运行状况的health详细信息。

GET

/actuator/heapdump

heapdump端点提供来自应用程序 JVM 的堆转储。(通过分析查看/env端点被*号替换到数据的具体值。)

GET

/actuator/httptrace

httptrace端点提供有关 HTTP 请求-响应交换的信息。(包括用户HTTP请求的Cookie数据,会造成Cookie泄露等)。

GET

/actuator/info

info端点提供有关应用程序的一般信息。

GET

/actuator/integrationgraph

integrationgraph端点公开了一个包含所有 Spring Integration 组件的图。

GET

/actuator/liquibase

liquibase端点提供有关 Liquibase 应用的数据库更改集的信息。

GET

/actuator/logfile

logfile端点提供对应用程序日志文件内容的访问。

GET

/actuator/loggers

loggers端点提供对应用程序记录器及其级别配置的访问。

GET

/actuator/mappings

mappings端点提供有关应用程序请求映射的信息。

GET

/actuator/metrics

metrics端点提供对应用程序指标的访问。

GET

/actuator/prometheus

端点以prometheusPrometheus 服务器抓取所需的格式提供 Spring Boot 应用程序的指标。

GET

/actuator/quartz

quartz端点提供有关由 Quartz 调度程序管理的作业和触发器的信息。

GET

/actuator/scheduledtasks

scheduledtasks端点提供有关应用程序计划任务的信息。

GET

/actuator/sessions

sessions端点提供有关由 Spring Session 管理的应用程序 HTTP 会话的信息。

GET

/actuator/startup

startup端点提供有关应用程序启动顺序的信息。

POST

/actuator/shutdown

shutdown端点用于关闭应用程序。

2.用户自定义扩展端点

二、漏洞利用

默认情况下所有Web端点都在/actuator目录下。

查看/actuator:

查看/actuator/env

env包含被脱敏的数据库用户名与密码与redis数据库密码等信息。

访问/actuator/heapdump下载堆转储文件:

一般比较大。

使用安装JDK自带的JVisualVM工具,对Heap Dump进行分析,JVisualVM位于/jdk/bin目录下

装入heapdump文件

涉及系统的一些配置信息:

env中信息存储在heapdump中的java.util.LinkedHashMap$Entry类中(Spring boot 2.X版本)。

根据/actuator/env页面展示的信息去heapdump文件中分析信息。(建议在/actuator/env检索“******”6个星号,去寻找password,key或者secret等信息)

比如:我要找到数据库的密码。

env中数据库登录用户名已经暴露,我们需要去找spring.datasource.password的值。

在OQL控制台执行OQL语句:这个语句是查出key值中包含password字符的数据。

select s from java.util.LinkedHashMap$Entry s where /password/.test(s.key.toString())

逐个查看查询出的结果:找到key值为spring.datasource.password的value就是数据库的登录密码。

下一步就是寻找在哪可以登录数据库了,看看外网有没有开放数据库的管理端口等,不展示了。

查redis数据库密码等信息同样步骤!

除了查找password再查一个其他信息。

这边在/actuator/env看到阿里云oss的信息。

使用OQL语句:

select s from java.util.LinkedHashMap$Entry s where /Secret/.test(s.key.toString())

查找key中包含Secret字符的:

这样就找到了oss的登录信息了。

使用OSS Browser尝试登录。(OSS Browser用法请自行搜索),这样就登录上阿里云OSS了,可以删除下载文件了(不要去做!)。

三、修复方法:

在 Spring Boot 2.x 中为了安全起见,Actuator 只开放了两个端点 /actuator/health 和 /actuator/info。可以在配置文件中设置打开或关闭。

1、Actuator 默认所有的监控点路径都在/actuator/*,当然如果有需要这个路径也支持定制,通过修改配置文件改变端点名避免被扫描发现。

2、关闭不需要使用的端点并引入security依赖,打开安全限制并进行身份验证。同时设置单独的Actuator管理端口并配置不对外网开放。

四、总结

1、Spring boot引起的信息泄露暴露的密码不只我展示的这么多,其他组件碰到后应该多去探索发现。

2、拿到密码后能做的也很多。

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot是一个开发框架,它可以帮助开发者快速构建基于Java的应用程序。奶茶店作为一家商家,可以利用Spring Boot来搭建自己的线上订购系统。 首先,奶茶店可以利用Spring Boot来构建一个网站或移动应用,通过这个应用,顾客可以方便地浏览奶茶店的菜单、价格以及促销活动等信息。顾客还可以在线下单,选择自己喜欢的奶茶口味和配料,并选择送货或到店自取等方式。通过Spring Boot可以实现用户注册、登录和支付等功能,为顾客提供便捷的购买体验。 其次,奶茶店可以借助Spring Boot的框架来管理库存、订单和配送等业务流程。使用Spring Boot的数据库操作能力,奶茶店可以实现订单的创建、修改和查询功能,同时管理商品的库存和配送状态。奶茶店还可以通过Spring Boot搭建一个仪表盘,实时监控订单和配送情况,以便快速响应顾客和提升服务质量。 另外,Spring Boot提供了一系列的安全机制,奶茶店可以利用这些机制来保护用户的隐私和支付安全。通过Spring Boot的安全框架,奶茶店可以实现用户认证和授权功能,确保只有授权的用户可以访问敏感信息。同时,奶茶店可以使用Spring Boot的加密机制,加密用户的密码和支付信息,防止信息泄露和黑客攻击。 综上所述,Spring Boot可以为奶茶店提供一套完整的解决方案,包括线上订购系统、业务流程管理和安全机制。这将有助于奶茶店提升用户体验、提高运营效率,并为顾客提供更好的服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值