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

时间轴:

Java知识点:

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

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

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

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

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

知识点:

1、JavaEE-SpringBoot-监控系统-Actuator

2、JavaEE-SpringBoot-接口系统-Swagger

3、JavaEE-SpringBoot-监控&接口&安全问题

Actutor断点图

演示案例:

SpringBoot-监控系统-Actuator

SpringBoot-接口系统-Swagger

安全案例-JVM 泄漏&接口自动化

#SpringBoot-监控系统-Actuator

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

  • 开发使用:

1.创建一个新项目TestActuatorDemo:


2.勾选项目(使用Ops下的Spring Boot Actuator):

引入配置pom.xml:

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

3.如果不配置Actuator,试着/actuator

注释掉application.properties

访问 localhost:8080/actuator

使用 JSON在线解析格式化验证 - JSON.cn:

试着访问看一下有什么:

4.配置actuator:

java 复制代码
info.name=xiaodou
info.sex=gay
management.endpoints.web.exposure.include=*

通过Actutor断点图有时候可以访问到想要看的内容:

Spring Boot Actuator 漏洞复现合集_springboot actuator 漏洞-CSDN博客

安全问题

通常/actuator中的有些网址会泄露本机电脑数据。

图像化 Server&Client 端界面

Actuator服务端:

1.创建一个新项目TestActuatorServer:

2.勾选项目(这次选择服务端)

3.在启动程序上写上@EnableAdminServer

java 复制代码
package cn.xiaodou.testactuatorserver;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;




@EnableAdminServer
@SpringBootApplication
public class TestActuatorServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestActuatorServerApplication.class, args);
    }

}
修改服务端的配置文件application properties:
java 复制代码
server.port=8888

Actuator客户端:

1.可以在TestActuatorServer下创建TestActuatorClient,勾选Client(略)

修改客户端的配置文件application properties:
java 复制代码
# 应用服务 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

访问http://127.0.0.1:8888

点击下面的地址点击c008ae29b2aa

得到以下页面(其实就是图形化展示刚才的env等)

若报错可以尝试换源。

安全问题heapdown:

常见问题heapdown:

heapdown可以理解为 整个项目打包的内存文件。

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

演示案例:

heapdump

1.创建一个新项目TestActuatorDemo1:

2.勾选这4个项目

3.信息配置:

配置application propertis

复制代码
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.jdbc.Driver

management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

访问:http://127.0.0.1:7777/actuator/heapdump

方法一:

使用 JDumpSpider-1.1-SNAPSHOT-full.jar 对heapdump文件进行分析:

使用指令

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

尝试访问/mappings

http://127.0.0.1:7777/actuator/mappings

在此处可以找到相同的配置信息

其他利用见下文
Spring Boot Actuator 漏洞复现合集_springboot actuator 漏洞-CSDN博客

分析得到有一些组件(不安全的组件,如log4j

如何防止:
java 复制代码
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.jdbc.Driver

management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

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

SpringBoot-接口系统-Swagger

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

1.创建TestSwaggerDemo

2.进行勾选

3.引入依赖项目:

版本二:

阿里云适合两个版本,有些版本太高会不适合和。

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

配置项目:

启动项目:

java 复制代码
package cn.xiadou.testswaggerdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@SpringBootApplication
public class TestSwaggerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestSwaggerDemoApplication.class, args);
    }

}

启动报错时候该如何解决:

在 application.properties中配置

java 复制代码
 # 设置路径匹配策略为Ant路径匹配器 
spring.mvc.pathmatch.matching-strategy=ant-path-matcher

访问:

http://localhost:8002/swagger-ui.html

创建一个TestController:

java 复制代码
package cn.xiaodi.testswaggerdemo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@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;
    }
}

发现网址中拥有TestController:

尝试改一下可以看到回显值:

版本三:

1.进行配置

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

2.可以在启动项进行**@EnableOpenApi**,也可以不用

3.尝试访问http://localhost:8002/swagger-ui/index.html

使用postman进行自动化操作

地址复制下面蓝色部分

点击run进入此页面

开始api自动化接口

还可以与burpsuite联动

本文章由李豆豆喵和番薯小羊卷~共同完成。

相关推荐
皮皮林5515 小时前
拒绝写重复代码,试试这套开源的 SpringBoot 组件,效率翻倍~
java·spring boot
用户908324602733 天前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
用户8307196840824 天前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
Java水解4 天前
Spring Boot 视图层与模板引擎
spring boot·后端
Java水解4 天前
一文搞懂 Spring Boot 默认数据库连接池 HikariCP
spring boot·后端
洋洋技术笔记4 天前
Spring Boot Web MVC配置详解
spring boot·后端
初次攀爬者5 天前
Kafka 基础介绍
spring boot·kafka·消息队列
用户8307196840825 天前
spring ai alibaba + nacos +mcp 实现mcp服务负载均衡调用实战
spring boot·spring·mcp
Java水解5 天前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端