
#开发框架-SpringBoot
#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 为例):
- 启动 Spring Boot 应用,确保应用进程正在运行(获取进程 ID,可通过 jps 命令查看)。
- 打开 JConsole(JDK 自带工具,在 JDK安装目录/bin/jconsole.exe)。
- 在 JConsole 连接界面,选择 "本地进程",找到你的 Spring Boot 应用进程并连接。
- 切换到 "MBeans" 标签页,展开 org.springframework.boot → Endpoint → env → Attributes,即可查看 env 端点的详细信息(如 properties 属性)。
2. 访问 mappings 端点(Web 方式暴露)
mappings 端点用于查看应用中所有 URL 映射关系(如控制器接口、请求路径对应关系),此时通过 HTTP 暴露,需通过 HTTP 请求访问:
步骤示例:
- 确认应用的 Actuator Web 访问端口(默认与应用主端口一致,若配置了 management.server.port=8081 则为 8081)。
- 构造访问 URL:http://应用IP:端口/actuator/mappings(例如 http://localhost:8081/actuator/mappings)。
- 通过工具(如浏览器、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项目,点击添加

添加好后点击运行即可

这里就会出结果了
