第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
1.创建一个新项目TestActuatorDemo:


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.如果不配置Actuator,试着/actuator
注释掉application.properties




4.配置actuator:
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
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:
server.port=8888

Actuator客户端:

修改客户端的配置文件application properties:
# åºç¨æå¡ 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



安全问题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)
如何防止:
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.引入依赖项目:
版本二:
阿里云适合两个版本,有些版本太高会不适合和。
<--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>
配置项目:
启动项目:
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中配置
# 设置路径匹配策略为Ant路径匹配器
spring.mvc.pathmatch.matching-strategy=ant-path-matcher
访问:
http://localhost:8002/swagger-ui.html
创建一个TestController:
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.进行配置
<--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联动
本文章由李豆豆喵和番薯小羊卷~共同完成。