Java安全—SpringBootActuator监控泄露Swagger自动化

news2024/12/14 6:55:41

前言

今天依旧是SpringBoot框架,估计还要一篇文章才能把它写完,没办法,Java安全的内容太多了。

Actuator

SpringBoot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理Spring Boot应用,简单来说就是一个监控的模块。

项目搭建

同样还是先来搭建一个项目,新建一个项目叫Actuator-demo,注意这里第三方引用还是阿里云。

选择依赖项。

可以查看一下配置文件。

我们把项目运行一下,控制台可以看到默认访问路径。

访问可以看到一堆接口。

直接找了一张图片,可以对照各接口是干啥的。

Actuator的安全问题主要是信息泄露这一块,从上图不难发现如果没有做限制,那么我们访问的信息是很多的。

比如我访问http://127.0.0.1:8081/actuator/env,可以看到我整个环境的配置信息。

现在搞个图形化的界面就一目了然了,新建一个项目叫Actuator-client,依赖选择客户端的。

客户端配置文件如下,防止端口冲突,所以我改为8089。

接着再新建一个服务端的项目,叫Actuator-server,依赖项选择服务端的。

服务端的配置端口为改为8888,要和我们客户端的访问端口一样。

服务端启动文件这里要引入依赖。

把客户端项目和服务端项目都启动一下,访问127.0.0.0:8888,是一个图形化页面。

点击进去可以看到监控信息的图形化页面,

安全问题

很多的SpringBoot框架都会用到Actuator这个监控组件,首当其冲的安全问题就是heapdump泄漏,这是由于开发者不正确的配置所导致的。我们回答Actuator-demo这个项目,把它运行起来。

访问 http://127.0.0.1:8081/actuator/heapdump 把文件下载下来。

这个heapdump直接打开是查看不了滴,我们要用专门的查看工具,这里用jdk自带的工具jvisualvm.exe,在jdk的bin目录下面。

打开之后就可以看到一堆的配置信息。

这个自带的工具不会给你自动的提取信息,比如账号密码啥的,我们可以用JDumpSpider这个工具去帮助我们提取一些有用的信息。

https://github.com/whwlsfb/JDumpSpider/releases

java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump

自动提取信息,比如什么OSS资源,账号密码等,因为我这里没有配置所以啥也没。

我们可以再新建一个项目去配置一些信息去验证一下,选择依赖项。

项目配置文件写入如下代码,配置一下数据库。

server.port=8888
spring.datasource.url=jdbc:mysql://localhost:3306/demo1
spring.datasource.name=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

访问http://127.0.0.1:8888/actuator/heapdump 把heapdump文件下载下来,此时我们再用工具去提取信息,便可以看到数据库的密码和配置等。

只要我们在配置文件加入这两个行代码,那么env和heapdump就不再可以被访问。

management.endpoint.heapdump.enabled=false
management.endpoint.env.enabled=false

Swagger

这是SpringBoot框架的一个接口系统,可以理解为它管理框架的所有接口,方便开发人员测试。

还是老规矩,新建一个项目叫swagger-demo,添加依赖。

由于SpringBoot并没有自带swagger的依赖,我们需要自己引入,分别有2版本和3版本的。二者并无太大的区别,如果你用的SpringBoot版本比较高,就可能会出现兼容性问题,我这里用的SpringBoot版本是阿里云的2.6.13,对于2和3版本的swagger都适用,如果你用3.x的SpringBoot可能会出现不兼容2版本的swagger。

可参考文章:https://blog.csdn.net/lsqingfeng/article/details/123678701

<--2.9.2版本-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>

可以看到导入的依赖。

如果有端口冲突就修改一下配置文件,并且加一句代码,不然会报错。

访问http://127.0.0.1:8002/swagger-ui.html。

我这里写了一些接口,比如什么hello、user、theonefx。

在swagger页面我们都可以看到。

为了更加直观,我们新建一个Java类,叫Testcontroller,并且写入以下代码,一个是POST传那么参数,一个是get传name参数。

@Controller
public class TestController {

    @GetMapping("/getdata")
    @ResponseBody
    public String getdata(@RequestParam String name){
        return "get have data " +name;
    }

    @PostMapping("/postdata")
    @ResponseBody
    public String postdata(@RequestParam String name){
        return "post have data " +name;
    }
}

此时我们再重新运行项目,可以看到多了个test-controller的测试接口。

点开确实是我们写好的接口,参数也帮你写好了。

我们随便填个参数测试一下,也是没问题的。

在实战中往往会有很多的接口,几百上千个,我们不可能一个一个地去提交数据测试,那咋办呢,这里用到我们之前说过的一个工具postman,去实现自动化测试。

首先复制我们的api。

点击API,选择Import导入。

选择链接导入。

可以看到有啥接口都给我们显示出来了。

点击Run会帮你全部测试一遍,不知道为啥我这里只有一个返回,可能配置啥的不对。

对于这个swagger一般都是接口泄露,比如什么登录接口、文件上传接口。

总结

本次主要讲了Actuator和swagger这两个常见的SpringBoot组件,主要的利用点都是信息泄露。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

质数的和与积

质数的和与积 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 两个质数的和是S&#xff0c;它们的积最大是多少&#xff1f; 输入 一个不大于10000的正整数S&#xff0c;为两个质数的和。 输出 一个整…

如何用VScode恢复误删文件-linux

如果你用vscode远程在服务器上办公&#xff0c;有一天你用了&#xff1a; rm -rf *然后你发现你的文件不见了&#xff0c;不要着急。 这种方法只适用于不多的几个文件。 这个时候你要做的是&#xff0c;查看右侧的1&#xff1a; 从1里面查找你删除的文件&#xff0c;然后点…

Linux文件操作基础

1.引入 在Linux第一章提到过&#xff0c; 在Linux中&#xff0c;一切皆文件&#xff0c;而文件由文件内容和文件属性组成&#xff0c;在C语言中可以 使用相应的接口打开文件&#xff0c;例如 fopen 函数 文件最开始在磁盘中&#xff0c;但是因为磁盘的速度远低于CPU的执行速度…

如何在 MacOS 上安装 Flutter ?

Flutter 是 Google 开发的一个功能强大的框架&#xff0c;它允许开发人员从单个代码库构建高质量的、本机编译的移动、web 和桌面应用程序。如果你是初次接触 Flutter&#xff0c;并希望在你的 macOS 系统上安装它&#xff0c;本指南将引导你一步一步地完成这个过程。 Step 1:…

【2025最新计算机毕业设计】基于SpringBoot+Vue社区医院挂号健康服务平台【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

Docker安装MySQL5.5版本数据库(图文教程)

本章教程,介绍如何使用Docker安装MySQL低版本5.5版本的数据库。 一、拉取镜像 docker pull mysql:5.5二、启动容器 docker run -d --name mysql5.5 --restart=always

可视化建模与UML《部署图实验报告》

一、实验目的&#xff1a; 1、熟悉部署图的基本功能和使用方法。 2、掌握使用建模工具软件绘制部署图的方法 二、实验环境&#xff1a; window11 EA15 三、实验内容&#xff1a; 根据以下的描述&#xff0c;绘制部署图。 网上选课系统在服务器端使用了两台主机&#xff0c;一…

Python的3D可视化库【vedo】2-3 (plotter模块) 增删物体、控制相机

文章目录 4 Plotter类的方法4.3 渲染器内的物体操作4.3.1 添加物体4.3.2 移除物体4.3.3 渲染器的内容列表 4.4 相机控制4.4.1 访问相机对象4.4.2 重置相机状态4.4.3 移动相机位置4.4.4 改变相机焦点4.4.5 改变相机朝向的平面4.4.5 旋转相机4.4.6 对齐相机的上朝向4.4.7 缩放 pl…

07篇(附)--仿射变换矩阵

此篇献给某些 头铁 的小只因们&#xff0c;认真钻研下面的数学式吧 原理示例 首先我们以最简单的一个点的旋转为例子&#xff0c;且以最简单的情况举例&#xff0c;令旋转中心为坐标系中心O&#xff08;0&#xff0c;0&#xff09;&#xff0c;假设有一点P0(x0,y0)&#xff0…

Unity屏幕截图、区域截图、读取图片、WebGL长截屏并下载到本地jpg

Unity屏幕截图、区域截图、读取图片、WebGL长截屏并下载到本地jpg 一、全屏截图并保存到StreamingAssets路径下 Texture2D screenShot;//保存截取的纹理public Image image; //显示截屏的Imagepublic void Jietu(){StartCoroutine(ScrrenCapture(new Rect(0, 0, Screen.width…

【2025最新计算机毕业设计】基于SprintBoot+Vue乡村振兴民宿管理系统【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

在Docker中运行MySQL的思考:挑战与解决方案

引言 在云计算和容器化技术日益普及的今天&#xff0c;Docker作为一种轻量级的容器化平台&#xff0c;已经成为开发和部署应用的首选工具之一。其提供的便携性、可扩展性和环境一致性对于无状态微服务来说无疑是巨大的福音。然而&#xff0c;并非所有应用都适合在Docker容器中…

【Linux网络】网络基础:传输层TCP协议(二)

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 传输层UDP/TCP协议 确认应答机制超时重传机制连接管理机制理解 TIME_WAIT 状态 滑动窗口流量…

virtualbox 搭建ubuntu

环境&#xff1a;VirtualBox-6.1.32 1、下载安装virtualbox 略 2、新建ubuntu 3、配置ubuntu 选择虚拟盘 4、安装ubuntu 5、安装ssh sudo apt install openssh-server openssh-client 查看ip 6、安装samba sudo apt install samba 查看ssh启动状态 sudo systemctl stat…

智能人体安全防护:3D 视觉技术原理、系统架构与代码实现剖析

随着工业化程度的提高&#xff0c;生产安全已成为企业关注的重点。尤其是在一些存在禁区的工业厂区和车间&#xff0c;人员误入或违规进入将带来严重的安全隐患。为了解决这一问题&#xff0c;迈尔微视推出了智能人体安全检测解决方案&#xff0c;为企业提供全方位的人员安全监…

Javaweb web后端maven介绍作用安装

自动导入到这个项目 src是源代码 main主程序&#xff0c;核心代码 java是Java源代码 resources是项目配置文件 test测试相关的 maven概述 介绍 依赖在本地仓库查找&#xff0c;如果本地仓库有&#xff0c;用本地仓库的依赖&#xff0c;本地没有&#xff0c;连接中央仓库&…

独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享&#xff01; EMD变体分解效果最好算法——CEEMDAN&#xff08;五&#xff09;-CSDN博客 拒绝信息泄露&#xff01;VMD滚动分…

网络基础概念

协议 协议在我的理解看来其实就是为了让全部计算机做通信而设计出来的一种约定 计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式 而制定协议这件事情并不是…

向量数据库Faiss C++

目录 1. Faiss简介2. FAISS 的主要特点2.1 高效性2.2 支持多种索引类型2.3 灵活性2.4 GPU 加速2.5 易于集成 3. 应用场景4. 安装4.1 安装依赖4.2 编译源码4.2.1 下载Faiss源码4.2.2 编译 5. Demo5.1 代码5.2 编译5.3 运行 1. Faiss简介 FAISS&#xff08;Facebook AI Similari…

群控系统服务端开发模式-应用开发-获取登录者今天操作日志

一、后端api开放路由 在根目录下route文件夹下app.php文件中&#xff0c;在perimission的group中添加如下代码&#xff1a; Route::get(member/personal_log,permission.Member/personalLog);// 获取个人信息操作接口 二、后端api添加方法 在根目录下app文件夹下controller文…