Spring Boot Actuator详解与漏洞利用

文章目录

  • 一、SpringBoot介绍
  • 二、SpringBoot特性
  • 三、Actuator介绍
  • 四、识别SpringBoot
  • 五、端点路径的枚举
  • 六、漏洞的利用
  • 七、Spring Boot Actuator未授权访问漏洞


一、SpringBoot介绍

Spring Boot (Java平台上的一种开源应用框架)

由Pivotal团队提供的全新框架,其设计的目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。


二、SpringBoot特性

Spring Boot所具备的特性:

(1) 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2) 内嵌Tomcat或Jetty等Servlet容器;
(3) 提供自动配置的 "starter"项目对象模型(POMS)以简化Maven配置;
(4) 尽可能自动配置Spring容器;
(5) 提供准备好的特性,如指标、健康检查和外部化配置;
(6) 绝对没有代码生成,不需要XML配置。


三、Actuator介绍

Actuator 是Spring Boot提供的对应用系统的监控管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信息以及Web请求的详细信息等。在Actuator启用的情况下,如果没有做好相关权限控制。非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。常常使用不当或者一些不经意的疏忽,可能造成信息泄漏等严重的安全隐患。

挖掘Actuator配置不当 的漏洞分为如下两步:

  • 判断和识别测试项目的web应用采用的框架为Springboot框架;
  • 尝试进行执行器端点路径的枚举,并根据实际情况加以利用;

四、识别SpringBoot

如何识别Spring Boot

方法一:

访问Web界面,观察地址栏或者标签页的前面的有一个这样的在这里插入图片描述
(是否为绿色的小树叶)icon图标,这里的图标如果开发没有做修改的话,spring框架默认为这个图标。
Spring Boot Actuator详解与漏洞利用_第1张图片
方法二:

构造错误的目录或者文件名等,让Spring框架产生默认的报错页面,一般访问这种页面都会出现如图所示的报错页面(如果开发人员没有修改Springboot框架的默认400500等的报错页面,也称为白标签报错页),到这里基本上可以确定Spring Boot框架了。
Spring Boot Actuator详解与漏洞利用_第2张图片
在实际的做法中两种方法综合进行判断,如果说符合以上两种情况就基本确定是Springboot框架,就可以尝试进行下一步的端点路径的枚举操作了。

五、端点路径的枚举

路径的枚举一般通过使用手动或者脚本测试所有可能存在的所有父目录子目录,然后利用脚本对父目录以及子目录进行探测,确定是否存在actuator执行端点的路径。

Actuator提供的执行器端点分为两类:原生端点和用户自定义扩展端点。

原生端点主要包括:
Spring Boot Actuator详解与漏洞利用_第3张图片
这里需要注意的是: 有些程序员会自定义/manage/management、项目App相关名称为spring根路径 Spring Boot Actuator 1.x版本默认内置路由的起始路径为 / 2.x版本则统一以/actuator为起始路径 Spring Boot Actuator默认的内置路由名字,如 /env 有时候也会被程序员修改,比如修改为 /appenv

Actuator两个版本路径如下:

Spring Boot Actuator详解与漏洞利用_第4张图片
Spring Boot Actuator详解与漏洞利用_第5张图片
对于寻找漏洞比较重要接口的有:

Spring Boot Actuator详解与漏洞利用_第6张图片

六、漏洞的利用

在以上的操作实施过程中,如果确定发现了actuator的配置漏洞,如需要证明或继续利用该漏洞挖掘其他漏洞,进而组合利用等,就需要进行其他操作,总结几个常见利用场景。

Spring Boot Actuator详解与漏洞利用_第7张图片

七、Spring Boot Actuator未授权访问漏洞

漏洞介绍

Spring Boot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助监控和管理Spring Boot应用。这个模块是一个采集应用内部信息暴露给外部的模块,上述的功能都可以通过HTTP和JMX访问。

Actuator是Spring Boot提供的应用系统监控的开源框架。 在攻防场景里经常会遇到Actuator配置不当的情况,攻击者可以直接下载headdump堆转储文件,然后通过一些工具来分析headdump文件,从而进一步获取敏感信息。

环境搭建

靶机环境:Windows10+jdk1.8.0_231
环境下载

git clone https://github.com/callicoder/spring-boot-actuator-demo.git
cd spring-boot-actuator-demo-master
mvn package
java -jar target/actuator-demo-0.0.1-SNAPSHOT.jar

mvn工具下载:https://maven.apache.org/download.cgi

在执行mvn package会出现如下报错
Spring Boot Actuator详解与漏洞利用_第8张图片
因为我们使用的没有IDE,所以在这可以用这个方法:
在maven的bin目录下找到mvn.cmd文件,在文件中输入你jdk当前所在的路径,像这样
Spring Boot Actuator详解与漏洞利用_第9张图片
保存! 重新编译,等待一会,编译成功如下:
Spring Boot Actuator详解与漏洞利用_第10张图片
启动环境->java -jar target/actuator-demo-0.0.1-SNAPSHOT.jar
Spring Boot Actuator详解与漏洞利用_第11张图片
Spring Boot Actuator详解与漏洞利用_第12张图片
本地访问,此时环境已搭建完成!

漏洞探测&利用

首先使用工具fscan来探测一下是否存在漏洞
Spring Boot Actuator详解与漏洞利用_第13张图片

springboot-env-unauth

根据Actuator两个版本的目录进行访问(2.x)
Spring Boot Actuator详解与漏洞利用_第14张图片
Spring Boot Actuator详解与漏洞利用_第15张图片
通过两个目录都是未认证直接访问到配置信息,攻击者可根据泄漏的信息进一步利用。

spring-actuator-heapdump

其实在实战中,最重要的就是heapdump文件,文件里面理论上可以发现很多敏感的数据库之类的信息。

该文件可以直接下载到本地来,使用专业工具进行解密;

专业工具地址:heapdump_tool.jar

使用方法:java -jar heapdump_tool.jar heapdump
Spring Boot Actuator详解与漏洞利用_第16张图片
没什么可用的信息,可能是刚刚搭建环境的原因吧,也可以试试其他方式获取相关信息,可参考链接:https://mp.weixin.qq.com/s/JKq4WxFKwh7IDIAqTKcTHw

你可能感兴趣的:(框架漏洞,漏洞复现,spring,boot)