第五十天(SpringBoot栈&Actuator&Swagger&HeapDump&提取自动化)

#开发框架-SpringBoot

参考:Spring Boot 中文文档

#SpringBoot-监控依赖-Actuator

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

-开发使用:

1、引入依赖

直接点击选择依赖后,maven自动下载并写进pom.xml里面

这个是创建项目时,找不到依赖时或者想自定义版本时;在xml文件添加依赖信息,然后再maven

这样写就和上面点击依赖效果是一样的,版本也是一样的

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

这种就是自定义版本了,写完版本后maven之后如果左侧的第三方依赖中没有找到这个依赖的话是没有成功的,是使用不了这个依赖的东西的

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

<version>3.1.2</version> *<!--*手动指定版本 -->

</dependency>

2、配置监控

主要查看信息:heapdump,env,info,mappings,httptrace

监控端点、健康检查等具体配置写在 application.properties application.yml 中,用于启用和定制 Actuator 的功能

下面是两种配置方式,实现的效果是一样的,只是写法有一些不同而已

基于application.properties

management.endpoints.web.exposure.include=*

#基于application.yml

management:

endpoints:

web:

exposure:

include: '*'

#安全配置:

这样写就是指定某个东西内容访问时不显示

#application.properties

management.endpoint.env.enabled=false

management.endpoint.heapdump.enabled=false

当配置为 jmx=env、web=mappings 时的访问方式

1. 访问 env 端点(JMX 方式暴露)

env 端点用于查看应用的环境变量、配置属性等信息,此时仅通过 JMX 暴露,需使用 JMX 客户端工具访问:

步骤示例(以 JConsole 为例)

  1. 启动 Spring Boot 应用,确保应用进程正在运行(获取进程 ID,可通过 jps 命令查看)。
  2. 打开 JConsole(JDK 自带工具,在 JDK安装目录/bin/jconsole.exe)。
  3. 在 JConsole 连接界面,选择 "本地进程",找到你的 Spring Boot 应用进程并连接。
  4. 切换到 "MBeans" 标签页,展开 org.springframework.boot → Endpoint → env → Attributes,即可查看 env 端点的详细信息(如 properties 属性)。
2. 访问 mappings 端点(Web 方式暴露)

mappings 端点用于查看应用中所有 URL 映射关系(如控制器接口、请求路径对应关系),此时通过 HTTP 暴露,需通过 HTTP 请求访问:

步骤示例

  1. 确认应用的 Actuator Web 访问端口(默认与应用主端口一致,若配置了 management.server.port=8081 则为 8081)。
  2. 构造访问 URL:http://应用IP:端口/actuator/mappings(例如 http://localhost:8081/actuator/mappings)。
  3. 通过工具(如浏览器、Postman、curl)发送 GET 请求,即可获取 mappings 端点的 JSON 格式数据(包含所有 URL 映射信息)。

management.endpoint.health.show-details=always

  • 配置/health端点(健康检查端点)是否显示详细信息,always表示始终显示完整细节。
  • 默认情况下,/health只返回简单的健康状态(如UP或DOWN),开启后会显示各组件的健康详情(如数据库连接状态、缓存状态等),便于排查问题。

#application.yml

management:

endpoint:

heapdump:

enabled: false #启用接口关闭

env:

enabled: false #启用接口关闭

2、1 图像化Server&Client端界面

Server:引入Server依赖-开启(@EnableAdminServer)

在项目启动的文件中添加 @EnableAdminServer

设置启动端口为8088

Client:引入Client依赖-配置(连接目标,显示配置等)

作用:

  • spring.boot.admin.client.url 是 Spring Boot Admin 客户端的配置属性,用于设置 Admin 服务器的地址。
  • http://127.0.0.1:8088 表示当前客户端应用会向运行在本地(127.0.0.1)8088 端口的 Spring Boot Admin 服务器注册。

背景知识:

Spring Boot Admin 是一个用于管理和监控 Spring Boot 应用的工具,采用 "服务器 - 客户端" 架构:

  • Admin 服务器:集中展示和管理所有注册的客户端应用(如健康状态、 metrics、日志等)。
  • Admin 客户端:被监控的 Spring Boot 应用,通过配置 Admin 服务器地址,主动向其注册并定期发送自身状态信息。

先启动servlet,开启监听等待client的连接;在启动client,然后访问servlet的8088端口,这里就会出现client的信息了,

点击进来就能看到client的信息了

3、安全问题

-heapdump泄漏

jvisualvm分析器(自带)

JDumpSpider提取器:https://github.com/whwlsfb/JDumpSpider

heapdump_tool提取器:https://github.com/wyzxxz/heapdump_tool

分析提取出敏感信息(配置帐号密码,接口信息 数据库 短信 云应用等配置)

创建一个新项目演示

只要有文件配置了就行,不是必须在这个文件配置,还可以配置一些oss等信息

启动项目,然后用火狐访问 127.0.0.1:8081/actuator ;找到heapdump点击一下,就会下载heapdump文件了

然后将文件丢到和工具同一级,启动cmd,输入命令: java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump文件名

这里就提取到了配置的信息了

指定查看信息的工具 ,命令:java -jar heapdump_tools.jar c:xx/xx/heapdump 文件完整路径

4、额外安全:

https://github.com/LandGrey/SpringBootVulExploit

https://github.com/wh1t3zer/SpringBootVul-GUI

例子:SpringCloud Gateway RCE(CVE-2022-22947)

->创建SpringCloud Gateway+Actuator项目

->更改项目版本及漏洞Gateway依赖版本

<spring-boot.version>2.5.2</spring-boot.version>

<spring-cloud.version>2020.0.3</spring-cloud.version>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

<version>3.1.0</version>

</dependency>

->启动项目进行测试

参考:springcloudgatewayRCE(spEl表达式) - QGG4588 - 博客园

访问地址,开启burp进行抓包

将数据包转到repeater中,方便测试

按照参考的步骤进行,将里面的数据复制一份到这里来,修改一下端口,然后点击send

这里出现状态码为201,说明成功创建了hackest 文件 ;可以根据自己想要执行的命令修改里面的whoai,将其替换成其他命令

继续进行第二步,依旧修改端口,点击send,状态码为200 ok

最后一步,依旧是修改端口号,点击send ,然后就会出现用户名了

#SpringBoot-接口依赖-Swagger

Swagger是当下比较流行的实时接口文文档生成工具。接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端要先出接口文档,前端根据接口文档来进行项目的开发,双方开发结束后在进行联调测试。

参考:SpringBoot教程(十六) | SpringBoot集成swagger(全网最全)_springboot swagger-CSDN博客

-开发使用

1、引入依赖

<--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>

<--3.0.0版本-->

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-boot-starter</artifactId>

<version>3.0.0</version>

</dependency>

2、配置访问

#application.properties

spring.mvc.pathmatch.matching-strategy=ant-path-matcher

#application.yml

spring

mvc:

pathmatch:

matching-strategy: ant_path_matcher

2.X版本启动需要注释@EnableSwagger2

s

2.X访问路径:http://ip:port/swagger-ui.html

找一个可以传递参数的方法测试,先点击Try it out

修改里面的值,然后Execute;下面就会输出值 ;这个主要是为了方便开发人员开完完功能后进行测试用的,如果上线后还保留着这个的话,就方便攻击者了解项目构造

3.X版本不需注释,写的话是@EnableOpenApi

3.X访问路径:http://ip:port/swagger-ui/index.html

3、安全问题

自动化测试:Apifox Reqable Postman

泄漏应用接口:用户登录,信息显示,上传文件等

可用于对未授权访问,信息泄漏,文件上传等安全漏洞的测试.

点击打开这个地址

将这个地址复制下来

然后来到Apifox 工具,在自动化测试下的根目录中, 新建一个创景

在接口管理中, 再建立一个目录

然后到项目设置里面选择 OPenAPI/Swagger 这个,然后将刚才复制的地址粘贴进去 ;点击继续

目录选择刚刚接口管理中创建的22目录

来到自动化测试中点击22场景,点击添加步骤,选择接口导入

选择22项目,点击添加

添加好后点击运行即可

这里就会出结果了

相关推荐
shepherd1113 小时前
深入解析Flowable工作流引擎:从原理到实践
java·后端·工作流引擎
喂完待续3 小时前
【序列晋升】25 Spring Cloud Open Service Broker 如何为云原生「服务市集」架桥铺路?
spring·spring cloud·微服务·云原生·系统架构·big data·序列晋升
荣淘淘4 小时前
互联网大厂Java面试三大回合全解析:从语言特性到性能安全
java·安全·面试·性能优化·互联网·多线程·语言特性
给力学长4 小时前
洗衣店小程序的设计与实现
java·数据库·vue.js·小程序·node.js
这周也會开心4 小时前
单元测试总结2
java·开发语言
范纹杉想快点毕业4 小时前
数据结构与算法个人学习代码笔记包含leetcode,海贼oj,蓝桥杯,ACM
java·开发语言·笔记·学习·算法·leetcode·蓝桥杯
资源开发与学习4 小时前
【10章】Java大模型工程能力必修课,LangChain4j 入门到实践
java
YDS8294 小时前
SpringMVC —— Spring集成web环境和SpringMVC快速入门
java·spring·mvc·springmvc
不知道取啥耶4 小时前
基于Springboot和Vue的前后端分离项目
vue.js·spring boot·后端