前言
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,均挖掘出了敏感信息并提交至平台。上面的所有截图均为实战时候的截图,现已全部修复。