Spring boot heapdump获取信息

分析

目录

  • 1. Springboot信息泄露
       1.1 可能泄露路由列表
       1.2 heapdump
    2 实际环境
       2.1 Springboot信息泄露测试
       2.2 heapdump读取
       2.2 heapdump分析

1. Springboot信息泄露

1.1 可能泄露路由列表

/api-docs
/v2/api-docs
/swagger-ui.html
/api.html
/sw/swagger-ui.html
/api/swagger-ui.html
/template/swagger-ui.html
/spring-security-rest/api/swagger-ui.html
/spring-security-oauth-resource/swagger-ui.html
/mappings
/actuator/mappings
/metrics
/actuator/metrics
/beans
/actuator/beans
/configprops
/actuator/configprops
/actuator
/auditevents
/autoconfig
/caches
/conditions
/docs
/dump
/env
/flyway
/health
/heapdump
/httptrace
/info
/intergrationgraph
/jolokia
/logfile
/loggers
/liquibase
/prometheus
/refresh
/scheduledtasks
/sessions
/shutdown
/trace
/threaddump
/actuator/auditevents
/actuator/health
/actuator/conditions
/actuator/env
/actuator/info
/actuator/loggers
/actuator/heapdump
/actuator/threaddump
/actuator/scheduledtasks
/actuator/httptrace
/actuator/jolokia
/actuator/hystrix.stream

/trace:显示最近的http包信息,可能泄露当前系统存活的Cookie信息。
  /env:应用的环境信息,包含Profile、系统环境变量和应用的properties信息,可能泄露明文密码与接口信息。
  /jolokia:RCE漏洞
  /heapdump:JVM内存信息,分析出明文密码

1.2 heapdump

  Heap Dump也叫堆转储文件,是一个Java进程在某个时间点上的内存快照。

可以使用   JVisualVM:JDK自带工具,供开发者用于监视,故障排除。

2 实际环境

2.1 Springboot信息泄露测试

  Burpsuite Intruder模块扫描

2.2 heapdump读取

2.2 heapdump分析

因为堆转储文件里面含有大量信息,要准确找到我们想要的信息需要借助一些工具和一些查询技巧。

​       Springboot OQL 对象查询语言是一种结构化查询语言,将类当作表、对象当作记录行、成员变量当作表中的字段。通过OQL可以方便快捷的查询一些需要的信息,加快检出需要的属性值。

版本差异

​       Spring boot 1.x 版本 heapdump 查询结果存储在 java.util.Hashtable$Entry 实例键值对中:

​       Spring boot 2.x 版本 heapdump 查询结果存储在 java.util.LinkedHashMap$Entry 实例键值对中:

​       利用password关键字检索,对应的 oql 查询语句


 

此次使用JDK自带JVisualVM工具,对Heap Dump进行分析,该工具位于<JDK_HOME>/bin/目录。

JDK自带工具,如下图所示:

双击打开JVisualVM工具。

其主界面,如下图所示:

​       通过JVisualVM加载heapdump文件,在概要栏目系统属性处,可看到部分敏感信息泄露。

部分敏感信息泄露,如下图所示:

切换至OQL控制台标签,在输入框输入如下语句,点击执行进行查询。

select s.value.toString() from java.util.Hashtable$Entry s where /password/.test(s.key.toString())

查询结果,如下图所示:


 

切换至类标签,在下方输入框限制检索条件java.util.Hashtable,点击结果中第一项java.util.Hashtable$Entry

查询结果,如下图所示:

切换不同的实例进行观察,在第411项实例发现后台管理员密码明文。

管理员密码明文,效果如下图所示:

在第409项实例中进一步可看到 MySQL数据库密码。

查看MySQL数据库密码,效果如下图所示:

在查找密码上,可结合网站 /env 或 /Actuator/env 接口,检索 关键词,使用被星号 遮掩对应的属性名作为OQL过滤条件。

查看遮挡属性值,效果如下图所示:

shiroKey

​       如目标网站使用Shiro安全框架,在过滤规则输⼊org.apache.shiro.web.mgt.CookieRememberMeManager 寻找 decryptionCipherKey字段,可获取key,进而rememberMe反序列化利用。

结尾:防控措施

在代码白盒审计时,对Springboot项目重点检测Actuator依赖,对安全依赖及配置进行复查,建议作为漏洞检出规则加入代码扫描器。

​       在网络安全风险自查中,将/heapdump 等敏感路径加入扫描器字典。


 

 在使用Actuator时,不正确的使用或不经意的疏忽,都会造成严重的信息泄露等安全隐患。安全的做法是引入security依赖,打开安全限制并进行身份验证。同时设置单独的Actuator管理端口并配置不对外网开放。

引入 security 依赖,打开安全限制,或禁用不需要接口,endpoints.env.enabled= false

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值