前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SpringBoot漏洞,网站数据库要被删了。。

SpringBoot漏洞,网站数据库要被删了。。

作者头像
陌溪
发布于 2023-01-30 07:12:04
发布于 2023-01-30 07:12:04
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

作者:陌溪

陌溪的学习笔记:note.moguit.cn

大家好,我是 陌溪

最近疲于公司业务,没有怎么肝文,小伙伴多多见谅~

前阵子,群里小伙伴发给我一个链接,说蘑菇的配置信息泄漏,要被删库啦!我一脸黑人问号。

蘑菇也不是第一次数据库受到安全问题,至少经历了两次生死考验了

Nacos出现重大安全漏洞,开源项目险遭脱库

大型生产事故,开源项目蘑菇博客差点被删库

随后就看到小伙伴给我发了一个链接地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://ip:8603/actuator/env

陌溪用浏览器打开,显示一大串的信息

Json 格式化工具,格式后发现,里面就是蘑菇的 application.yml 配置信息!

蘑菇配置信息

往下翻了翻,找到数据库的账号和密码。还好没有直接将密码直接明文显示,竟然良心的加了掩码

加了掩码的密码

但是小伙伴以为上面这样就安全了么?

继续扒开 /actuator 目录下的内容,可以看到除了 env 外,还有其它的信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/actuator/env      # 提供对配置环境的访问
/actuator/beans    # 描述应用程序上下文里全部的Bean
/actuator/health   # 报告应用程序的健康指标
/actuator/info     # 获取应用程序的定制信息
/actuator/trace    # 显示最后几条HTTP消息
/actuator/logfile  # 输出日志文件的内容
/actuator/heapdump # 堆栈快照
...

其中有意思的是 /actuator/heapdump 堆栈快照

什么是堆栈文件?

heapdump 文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况。heapdump 文件是指定时刻的Java 堆栈的快照,是一种镜像文件。

Heap Dump 中主要包含当生成快照时堆中的 Java 对象和类的信息,主要分为如下几类:

  • 对象信息:类名、属性、基础类型和引用类型
  • 类信息:类加载器、类名称、超类、静态属性
  • GC RootsJVM 中的一个定义,进行垃圾收集时,要遍历可达对象的起点节点的集合
  • 线程栈和局部变量:快照生成时候的线程调用栈,和每个栈上的局部变量

我们使用访问 /actuator/heapdump 获取到堆栈快照文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://ip:8603/actuator/heapdump

下载的时候,这个文件还是比较大的,大概有 100MB

下载快照

下载完成后,需要使用专门的工具( heapdump_tool.jar )才能打开

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
下载地址:https://toolaffix.oss-cn-beijing.aliyuncs.com/wyzxxz/20220720/heapdump_tool.jar

声明:此工具仅用于企业安全人员自查验证自身企业资产的安全风险,或有合法授权的安全测试,请勿用于其他用途,如有,后果自负。

下载完成后,将工具以及刚刚的堆存储文件放一起

堆栈快照和工具

然后使用下面命令,读取堆栈快照

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java -jar heapdump_tool.jar  heapdump

然后会提示进行模式选择,有两个选项

  • 0:搜索数据,可能找不到某些数据,并且不能使用 num 和 len 函数
  • 1:加载所有的对象,需要等待几分钟

选择模式

我们就输入 0,开始搜索数据

找到之前加了掩码的Key,即:spring.security.user.password,也就是下图的内容

加了掩码的密码

输入完成后,可以看到我们的数据库密码,直接被打印出来了!

mysql密码

同时在测试一下 Redis 的密码:spring.redis.password 也直接展示出来了

redis密码

直接使用 SQLLog 连接到数据库,蘑菇数据内容一览无遗,直接就芭比Q了

连上数据库了

漏洞原因

ActuatorSpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。

Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息,从而导致信息泄露甚至服务器被接管的事件发生。

如上所示,actuatorspringboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要有:

所有端点

也就是说,只要你使用的 SpringBoot 框架,并且添加了 Actuator 依赖,就可能有这个问题。

比如,蘑菇之前引入 SpringSecurity 配置的时候,直接从网上 Copy 了一份配置,把所有的内容允许匿名访问给开放放出去了,也给自己网站的安全问题造成隐患。

开放了actuator所有内容

解决方法

可以直接在配置文件中,排除掉存在危险的端点,比如把:envbeansheapdump 排除

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: env,beans,heapdump

这样在访问 /actuator/env 地址的时候,就会访问不了的

另外,就是在 SpringSecurity 配置文件处,不能用 /actuator/** 让所有都匿名访问,而是配置不敏感的请求,允许匿名访问

而对于敏感的地址,我们需要验证 SpringSecurity 的账号和密码,如下所示,我们只允许访问以下几种方法

开放部分安全的接口

配置完后,再次访问就会出现访问拒绝了,这样也杜绝了泄漏堆栈快照的问题。

拒绝访问

如果访问配置允许匿名访问的接口,也还是可以拿到配置信息的

访问允许匿名访问的接口希望各位小伙伴们也检查一下自己的项目中,有没有存在这样的问题,并且赶快修复掉~好了,本期关于蘑菇漏洞的修复,就讲到这里了,我是陌溪,我们下次再见

往期推荐

博主就职于字节跳动后端研发,一直维护校招笔记仓库 LearningNote「在Gitee上已有 5.6k star,地址 https://gitee.com/moxi159753/LearningNotes」,公众号上的文章也会在此同步更新,欢迎各位小伙伴一起交流学习,回复 「PDF」获取PDF笔记。

同时,想要丰富项目经验的小伙伴,可以参考我维护的开源微服务博客项目:蘑菇博客「 Gitee 官方推荐项目,博客类搜索排名第一,在 Gitee 已有 5.3K star,仓库地址:https://gitee.com/moxi159753/mogu_blog_v2 」。

本公众号申请较晚,暂时没有开通留言功能,欢迎小伙伴们添加我的私人微信 coder_moxi【备注:加群】,我将邀请你加入到蘑菇博客交流群中,欢迎小伙伴们找陌溪一块聊天唠嗑,共同学习进步。最后,如果你觉得本文对你有所帮助,麻烦小伙伴们动动手指给文章点个「赞」和「在看」,非常感谢大家的支持。

快来找陌溪唠嗑吧

点个在看你最好看

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌溪教你学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何使用一条命令完成蘑菇博客的部署?
陌溪这次和小伙伴们来聊一聊蘑菇博客的部署,在经过项目的不断更新迭代,部署方式也是经历了多个阶段。分别是:手动部署,Docker部署,Docker-Compose部署。而在这两天,陌溪应小伙伴们的要求,继续简化部署流程,完成了使用 一条命令部署蘑菇博客 。下面,让我们一起来看看蘑菇博客部署方式的变化。
陌溪
2021/06/23
9180
如何使用一条命令完成蘑菇博客的部署?
对没有监控的微服务Say No!
目录: 一、监控简介 二、监控策略 三、总结 一、监控简介 微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务
yuanyi928
2018/03/30
1.7K0
对没有监控的微服务Say No!
网站终于被收录了!
在聊这个问题之前,我们先谈谈什么是 SEO。搜索引擎优化(Search engine optimization,简称 SEO ),指为了提升网页在搜索引擎自然搜索结果中(非商业性推广结果)的收录数量以及排序位置而做的优化行为,是为了从搜索引擎中获得更多的免费流量,以及更好的展现形象。
陌溪
2022/05/26
2.2K1
网站终于被收录了!
几行代码,给自己的网站安排暗黑模式!
最近,看到不少网站都有暗黑模式,能够让我们在夜晚浏览网站的时候保护双眼,所以花费了半天的时间研究了一下,给蘑菇安排上了。
陌溪
2022/05/26
9900
几行代码,给自己的网站安排暗黑模式!
在银行做开发,摸鱼被抓了..
我们都知道,银行的系统相对比较稳定,新功能的开发也会给比较长的周期进行迭代,比如一个 CURD小功能,给两周的开发排期,然后再加上测试,可能一个小需求一个月后才上线。
陌溪
2021/12/27
6330
在银行做开发,摸鱼被抓了..
蘑菇博客Golang版安装指南
首先特别感谢群里小伙伴 @林间露 给蘑菇博客提供的 Golang 版本,开源仓库地址如下
陌溪
2021/04/09
7370
蘑菇博客Golang版安装指南
陌溪的小破站,又㕛叒叕被打挂了!
没想到通过 SSH 命令想进入到服务器的时候,一直提示超时,发现我竟然进不去自己的服务器了??
陌溪
2022/05/26
1.4K0
陌溪的小破站,又㕛叒叕被打挂了!
再见了Jenkins,一款更轻量级的持续集成工具!
最近,群里有小伙伴在倒腾一个叫 Drone 的项目,说它比 Jenkins 更轻量级。
陌溪
2022/10/27
6.3K0
盘一盘Redis的底层数据结构
Redis 是一个高性能的分布式内存数据库,在国内的公司也有着非常广泛的使用场景。因此,在面试过程中,关于 Redis 相关的知识点,也是经常被问到的。
陌溪
2022/10/27
8100
调研了 100 来个 Java开源博客系统,发现这 7 个最哇塞!
因为个人需求,我重新整理了一些 Java 博客系统,大部分都是基于 Spring Boot 开发的。
Guide哥
2021/04/16
1.7K0
调研了 100 来个 Java开源博客系统,发现这 7 个最哇塞!
盘一盘,近期蘑菇社区都更新啥~
最近,蘑菇社区也更新了很多功能了,加入了很多社区的元素,有不少小伙伴已经不知道如何打开蘑菇了~
陌溪
2022/05/26
1K0
盘一盘,近期蘑菇社区都更新啥~
有了它,让本地没有难配的开发环境!
最近在写蘑菇博客的时候,因为使用到了一些 MySQL 的高级语法,导致原来的 5.6 版本的 MySQL 无法正常使用。
陌溪
2021/12/27
7980
有了它,让本地没有难配的开发环境!
蘑菇博客登顶了!
但是作为博客这一个小类目来说,关注这个类目的目标群体也不会太多,所以能够一步步提升,最后成功登顶。还是挺让我开心的,在蘑菇博客中,也见证了我的一步步成长。
陌溪
2022/10/27
1K0
2年目睹40次删库场景,我决定给蘑菇写一个备份脚本
以上几种情况,是目前小白最容易犯的错误,然后导致植入恶意脚本,被挖矿或者删除数据库。
陌溪
2022/04/11
7590
2年目睹40次删库场景,我决定给蘑菇写一个备份脚本
嗯,以后写教程就用它了!
很多时候文档并不能较好的记录我们每一步操作流程,所以为了更加直观的展示,一般会使用视频来进行记录。
陌溪
2022/05/26
3850
嗯,以后写教程就用它了!
官方JDK的BUG?蘑菇签到又出问题啦!
但是,在 2021 年 12月 26 日,蘑菇群里的小伙伴反馈签到成功,但是当日显示未签到,签到积分也正常发放了。
陌溪
2022/01/05
3990
官方JDK的BUG?蘑菇签到又出问题啦!
一款功能强大的Docker容器实时指标监控
最近,蘑菇社区被一群热心的群友关照,导致网站出现卡顿,宕机的情况,陌溪为了查看具体原因,需要使用命令进行排查。
陌溪
2022/04/11
2.9K0
一款功能强大的Docker容器实时指标监控
Spring Boot 使用Actuator监控应用
今天是突然喵到这个知识点(Actuator)的,我以前确实不知道这个玩意可以这么玩,像是发现新大陆一样,整了会它,还学会了如何优雅的关闭SpringBoot应用😂。 很喜欢一句话:”八小时内谋生活,八小时外谋发展“ 我们:"待别日相见时,都已有所成” 看看小风景再继续哈 Spring Boot 使用Actuator监控应用 一、前言 1)概述: 2)分类: 3)主要接口: 二、快速开始 步骤: 导入依赖: 书写配置: 启动测试、命令解释: 1、actuator 2、health 3、i
宁在春
2022/10/31
7710
Spring Boot 使用Actuator监控应用
网站被人刷了!
前阵子,陌溪在快乐搬砖的时候,突然群里小伙伴们疯狂 @ 我,说蘑菇社区今天打不开了!
陌溪
2022/04/11
2.2K0
网站被人刷了!
Java|使用Spring Boot Actuator监控应用
微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题?
黄小怪
2018/12/26
1.4K0
推荐阅读
相关推荐
如何使用一条命令完成蘑菇博客的部署?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文