简单Spring Boot框架漏洞SRC挖掘

前言

Spring Boot框架介绍

Spring Boot框架的的作用很简单,就是帮我们自动配置,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功能,让我们快速构建企业及应用程序。

Actuator中间件介绍

Actuator是Spring Boot提供的服务监控和管理工具。当Spring Boot应用程序运行时,它会自动将多个端点注册到路由进程中。而由于对这些端点的错误配置,就有可能导致一些敏感信息泄露。

发现Spring Boot框架

有两种快快捷的发现方法(其中可以在某眼用ico的哈希值进行搜索):

  • 网站的icon文件是一个绿色的树叶,如图所示:

  • 查看页面的报错信息:

敏感信息泄露所影响的版本

Spring Boot < 1.5:默认未授权访问所有端点。
Spring Boot >= 1.5:默认只允许访问/health和/info页面,但是此安全性通常被应用程序开发人员禁用。

常用的页面作用

auditevents     显示当前应用程序的审计事件信息
beans           显示一个应用中所有Spring Beans的完整列表
configprops     显示一个所有@ConfigurationProperties的集合列表
env             显示来自Spring的 ConfigurableEnvironment的属性 
flyway          显示数据库迁移路径,如果有的话 
health          显示应用的健康信息
info            显示任意的应用信息 
liquibase       展示任何Liquibase数据库迁移路径,如果有的话
metrics         展示当前应用的metrics信息
mappings        显示一个所有@RequestMapping路径的集合列表
scheduledtasks  显示应用程序中的计划任务
sessions        允许从Spring会话支持的会话存储中检索和删除
threaddump      执行一个线程dump
heapdump        返回一个GZip压缩的hprof堆dump文件 
logfile         返回日志文件内容

访问/env

获取当前环境属性
其中redis账户和信息泄露:

访问/metrics

获得每个度量的名称,其中主要监控了JVM内容使用、GC情况、类加载信息等,下面展示了一些度量的详细信息:

访问/configprops

查看配置文件中设置的属性内容,以及一些配置属性的默认值:

访问/info

展示了关于应用的一般信息,这些信息从编译文件中获取:

访问/mappings

其中描述全部的URI路径,以及它们和控制器的映射关系:

访问/health

health只展示了简单的UP和DOWN状态,为了获得健康检查中所有指标的详细信息,就需要通过在application.yaml中增加如下内容:

management:
  endpoint:
    health:
      show-details: always

一旦你打开上述开关,在/health中就可以看到详细内容,比如下面这样:

访问/heapdump

会返回一个gzip压缩的JVM堆dump,其中是jvm heap信息。下载的heapdump文件大小通常在 50M—500M 之间,有时候也可能会大于 2G。然后使用MAT可以获得jvm heap中的密码明文,如下图所示:

Spring Boot敏感端点路径

Spring Boot敏感端点的路径可以用工具或者是自己写python脚本跑出来,我这这里用的是goby里面的插件扫描出来的:

SRC实战

使用这个漏洞实战了某些src,均挖掘出了敏感信息并提交至平台。上面的所有截图均为实战时候的截图,现已全部修复。

我来吐槽

*

*