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

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

相关推荐
Dyan_csdn30 分钟前
【Java项目】基于SpringBoot的【旅游管理系统】
java·spring·tomcat
楠枬2 小时前
在线抽奖系统——项目测试
java·spring boot·功能测试·spring
m0_748238782 小时前
Spring Boot(快速上手)
java·spring boot·后端
泡泡Java2 小时前
【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用
spring boot·spring·adb
dreadp3 小时前
BiliBili视频下载-原理与实现Python+FFmpeg
前端·python·ffmpeg·自动化·json·音视频
Dyan_csdn3 小时前
【Java项目】基于Spring Boot的校园博客系统
java·开发语言·spring boot
ekskef_sef3 小时前
Springboot中使用Elasticsearch(部署+使用+讲解 最完整)
spring boot·elasticsearch·jenkins
web137656076433 小时前
Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)
java·spring boot·后端
代码中の快捷键3 小时前
Spring MVC 的执行流程解析:从用户请求到响应返回
java·spring·mvc