Spring Boot
基于 IDEA 创建 Spring Boot 应用
https://www.jetbrains.com/zh-cn/help/idea/your-first-spring-application.html
Spring Boot Actuator
Spring Boot Actuator 是 Spring Boot 官方提供的一个自动化监控模块,为你的 Spring Boot 应用添加一组现成的端点(Endpoints),用来监控、管理和维护正在运行的应用。
Maven 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.properties
management.endpoint.heapdump.access=unrestricted
management.endpoints.web.exposure.include=*
Actuator 提供一组自动配置的 REST 端点(endpoints),包括但不限于:
/actuator/health:应用健康状况(可扩展检查数据库、Redis、Disk 等)/actuator/info:应用信息(可配置 version、描述等)/actuator/metrics:关键性能指标暴露(如 JVM、CPU、内存、请求数等)/actuator/env:环境变量和配置属性/actuator/beans:Spring 容器管理的 Bean 列表/actuator/loggers:所有日志级别动态观察和调整/actuator/threaddump:线程信息/actuator/heapdump:JVM 堆转储/actuator/mappings:Controller 路径映射详情
其中对寻找漏洞比较重要接口的有:
-
/env、/actuator/envGET 请求
/env会直接泄露环境变量、内网地址、配置中的用户名等信息;当程序员的属性名命名不规范,例如 password 写成 psasword、pwd 时,会泄露密码明文;同时有一定概率可以通过 POST 请求
/env接口设置一些属性,间接触发相关 RCE 漏洞;同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。 -
/refresh、/actuator/refreshPOST 请求
/env接口设置属性后,可同时配合 POST 请求/refresh接口刷新属性变量来触发相关 RCE 漏洞。 -
/restart、/actuator/restart暴露出此接口的情况较少;可以配合 POST 请求
/env接口设置属性后,再 POST 请求/restart接口重启应用来触发相关 RCE 漏洞。 -
/jolokia、/actuator/jolokia可以通过
/jolokia/list接口寻找可以利用的 MBean,间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。 -
/trace、/actuator/httptrace一些 http 请求包访问跟踪信息,有可能在其中发现内网应用系统的一些请求信息详情;以及有效用户或管理员的 cookie、jwt token 等信息。
heapdump 利用
java -jar heapdump_tool.jar heapdump
https://github.com/wyzxxz/heapdump_tool https://github.com/whwlsfb/JDumpSpider
Spring4Shell(CVE-2022-22965)
Spring4Shell 是一种影响运行在 JDK 9+环境中、以 WAR 包在 Tomcat 下部署的 Spring 框架远程代码执行漏洞。
https://www.hackthebox.com/blog/spring4shell-explained-cve-2022-22965 https://medium.com/@vulnmachines/spring4shell-write-up-vulnmachines-31d825feeb34
参考资料
https://github.com/LandGrey/SpringBootVulExploit/tree/master https://github.com/wyzxxz/heapdump_tool