第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联动

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

相关推荐
二哈喇子!1 天前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
二哈喇子!1 天前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
二哈喇子!1 天前
基于SpringBoot框架的水之森海底世界游玩系统
spring boot·旅游
二哈喇子!1 天前
Java框架精品项目【用于个人学习】
java·spring boot·学习
二哈喇子!1 天前
基于SpringBoot框架的网上购书系统的设计与实现
java·大数据·spring boot
观熵1 天前
SaaS 系统的自动化部署结构设计实战指南:基于 K8s + Helm 的工程落地路径
运维·kubernetes·自动化·saas 架构
二哈喇子!1 天前
基于JavaSE的淘宝卖鞋后端管理系统的设计与实现
java·spring boot·spring
Coder_Boy_1 天前
基于SpringAI的在线考试系统-智能考试系统-学习分析模块
java·开发语言·数据库·spring boot·ddd·tdd
高山上有一只小老虎1 天前
mybatisplus实现分页查询
java·spring boot·mybatis
罗伯特_十三1 天前
Spring AI ChatModel 使用记录
java·人工智能·spring