039-安全开发-JavaEE应用&SpringBoot框架&Actuator监控泄漏&Swagger自动化
#知识点:
1、JavaEE-SpringBoot-监控系统-Actuator
2、JavaEE-SpringBoot-接口系统-Swagger
3、JavaEE-SpringBoot-监控&接口&安全问题
演示案例:
➢SpringBoot-监控系统-Actuator
➢SpringBoot-接口系统-Swagger
➢安全案例-JVM泄漏&接口自动化
#SpringBoot-监控系统-Actuator
SpringBoot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理Spring Boot应用。
1、开发使用:
1、引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、配置监控
-
暴露配置:
-
application.properties
# 设置Spring Boot应用的端口为7777 server.port=7777# 指定数据库连接的URL,使用MySQL数据库,连接本地主机(localhost)的3306端口上的名为dome01的数据库 spring.datasource.url=jdbc:mysql://localhost:3306/dome01# 设置数据库的用户名为root spring.datasource.name=root# 设置数据库的密码为root spring.datasource.password=root# 指定MySQL数据库的JDBC驱动程序的类名 spring.datasource.driver-class-name=com.mysql.jdbc.Driver**# 启用所有的Actuator端点,允许通过HTTP访问监控和管理端点 management.endpoints.web.exposure.include=*# 在健康检查端点中显示详细信息,包括应用程序的各个健康指标 management.endpoint.health.show-details=always**
-
application.yml
management:endpoints:web:**# 允许通过HTTP访问所有的Actuator端点exposure:include: '*'**
-
-
安全配置:关闭隐私泄露的的端点即可
-
application.properties
**# 启用或禁用Env端点,false表示禁用 management.endpoint.env.enabled=false# 启用或禁用Heap Dump端点,false表示禁用 management.endpoint.heapdump.enabled=false**
-
application.yml
management:endpoint:**# 启用或禁用Heap Dump端点,false表示禁用heapdump:enabled: false # 启用接口关闭# 启用或禁用Env端点,false表示禁用env:enabled: false # 启用接口关闭**
-
3、 图像化Server&Client端界面
-
Server:引入Server依赖-开启(@EnableAdminServer)
-
Client:引入Client依赖-配置(连接目标,显示配置等)
-
分别启动两个项目文件
2、安全问题
heapdump泄漏
得到对应heapdump包可以使用工具进行分析:获取到配置信息==(分析提取出敏感信息(配置帐号密码,接口信息 数据库 短信 云应用等配置)==
-
工具使用:JDumpSpider提取器https://github.com/whwlsfb/JDumpSpider/releases
java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump
-
工具使用:jvisualvm分析器
安装jdk自带,文件搜索获取 如:D:\jdk1.8.0_112\bin\jvisualvm.exe测试安装:JDK1.8_112 下载JDK:http://www.itmop.com/downinfo/136203.html
其他利用见下文
https://blog.csdn.net/drnrrwfs/article/details/125242990
分析得到有一些组件(不安全的组件,如log4j)
#SpringBoot-接口系统-Swagger
Swagger是当下比较流行的实时接口文文档生成工具。接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端要先出接口文档,前端根据接口文档来进行项目的开发,双方开发结束后在进行联调测试。
参考:https://blog.csdn.net/lsqingfeng/article/details/123678701
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
# 设置路径匹配策略为Ant路径匹配器 spring.mvc.pathmatch.matching-strategy=ant-path-matcher
-
application.yml
spring:mvc:pathmatch:# 设置路径匹配策略为Ant路径匹配器matching-strategy: ant_path_matcher
注意事项:
2.X版本启动需要注释**@EnableSwagger2**
3.X版本不需注释,写的话是**@EnableOpenApi**
2.X访问路径:http://ip:port**/swagger-ui.html**
3.X访问路径:http://ip:port**/swagger-ui/index.html**
3、安全问题
自动化测试:Postman
泄漏应用接口:用户登录,信息显示,上传文件等
可用于对未授权访问,信息泄漏,文件上传等安全漏洞的测试.
- 打开postman打开工作台,在左侧找到API
- 打开API导入生成的swagger页面提供的API:http://127.0.0.1:8080/v3/api-docs
- 导入成功后点击Api Documentation,点击右侧的运行,勾选想要测试的接口,执行即可