Day39:安全开发-JavaEE应用&SpringBoot框架&Actuator监控泄漏&Swagger自动化

目录

SpringBoot-监控系统-Actuator

SpringBoot-接口系统-Swagger

思维导图


Java知识点:
功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方组件使用等.

框架库:MyBatis,SpringMVC,SpringBoot,Shiro,Log4j,FastJson等

技术:Servlet,Listen,Filter,Interceptor,JWT,AOP,反射机制待补充

安全:SQL注入,RCE执行,反序列化,脆弱验证,未授权访问,待补充

安全:原生开发安全,第三方框架安全,第三方组件安全等,架构分析,待补充

SpringBoot-监控系统-Actuator

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

Actutor断点图

新建项目,创建 spring 项目,依赖选择 Web 中的 Spring Web,Ops 中的 Spring Boot Actuator

引入依赖,当创建项目时未选择 actuator 依赖时,可在配置文件 pom.xml 中自行引入

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

配置监控,在 application.properties 进行如下配置

XML 复制代码
# 这个配置项是用于指定要暴露的web端点。*表示暴露所有端点。
management.endpoints.web.exposure.include=*
# 这个配置项用于指定是否显示健康检查的详细信息。always表示总是显示详细信息。
management.endpoint.health.show-details=always

然后就可以通过上面的断点图访问到actutor,会泄露一些关键信息

这里面会暴露出很多敏感信息

安全配置:在 application.properties 进行如下配置,关闭某些端点的启用,防止敏感信息泄露

从这里也可以看出来,/actuator/env 和 /actuator/heapdump 这两个目录下爆出来信息是很敏感

XML 复制代码
management.endpoint.env.enabled=false
management.endpoint.heapdump.enabled=false

再次尝试访问/actuator/env,/actuator/heapdump就会访问失败

图像化 Server&Client 端界面

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

application.properties 配置信息

XML 复制代码
# 应用服务 WEB 访问端口
server.port=8889


spring.boot.admin.client.url=http://127.0.0.1:8888
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

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

application.properties 配置信息

XML 复制代码
## 应用服务 WEB 访问端口
#server.port=8080
##下面这些内容是为了让MyBatis映射
##指定Mybatis的Mapper文件
#mybatis.mapper-locations=classpath:mappers/*xml
##指定Mybatis的实体目录
#mybatis.type-aliases-package=cn.xiaodi.testactuatordemo1.mybatis.entity
## Actuator Web 访问端口
#management.server.port=8081
#management.endpoints.jmx.exposure.include=*
#management.endpoints.web.exposure.include=*
#management.endpoint.health.show-details=always


server.port=7777

spring.datasource.url=jdbc:mysql://localhost:3306/demo01
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=*

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

分别启动两个项目文件

安全问题:heapdump泄漏

得到对应heapdump包可以使用工具进行分析:获取到配置信息(分析提取出敏感信息(配置帐号密码,接口信息 数据库 短信 云应用等配置)

访问这个路径,下载/actuator/heapdump这个文件

工具使用:JDumpSpider提取器https://github.com/whwlsfb/JDumpSpider/releases

可以帮助我们自动化从中提取敏感信息,里面包含类信息,可以直接到很多配置信息

工具使用: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

创建项目引入依赖

引入依赖

2.9.2

XML 复制代码
<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

XML 复制代码
 <dependency>
     <groupId>io.springfox</groupId>
     <artifactId>springfox-boot-starter</artifactId>
     <version>3.0.0</version>
 </dependency>

application.properties

XML 复制代码
# 应用服务 WEB 访问端口
server.port=8002
# 设置路径匹配策略为Ant路径匹配器
spring.mvc.pathmatch.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

安全问题:

自动化测试:Postman

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

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

打开postman打开工作台,在左侧找到API

打开API导入生成的swagger页面提供的API:http://127.0.0.1:8080/v3/api-docs

导入成功后点击Api Documentation,点击右侧的运行,勾选想要测试的接口,执行即可

也可以批量化测试

思维导图

相关推荐
懒惰的bit2 小时前
基础网络安全知识
学习·web安全·1024程序员节
是谁谁谁4 小时前
【cft.show-web3解题思路】-php://input伪协议
web安全·网络安全·系统安全
无情啦少6 小时前
shodan 【2】(泷羽sec)
安全·web安全·网络安全
网络安全-老纪8 小时前
网络安全专业名词解释
安全·web安全
网安_秋刀鱼9 小时前
中间件安全
安全·web安全·网络安全·中间件·1024程序员节
网安CILLE10 小时前
2024下半年自学黑客(网络安全)
linux·网络·安全·web安全·网络安全·职场和发展·密码学
dal118网工任子仪10 小时前
web安全漏洞之xss(1)
笔记·学习·web安全·网络安全·xss
文人sec11 小时前
泷羽sec学习打卡-Windows基础virus
windows·学习·安全·web安全·php
网络安全指导员12 小时前
渗透利器-kali工具 (第三章-6) Xss漏洞学习之-Beef-Xss
前端·网络·学习·web安全·xss
群联云防护小杜12 小时前
云防护单节点2T抗攻击能力意味着什么?
网络·安全·web安全