Keyi 的日常 


MAT 查找 spring heapdump 中的密码明文


前景

访问 /env 接口时,spring actuator 会将一些带有敏感关键词 (如 password、secret) 的属性名对应的属性值用 ** 号替换,以达到脱敏的效果。
在目标既不出网,/jolokia 接口又没有合适的 MBean 或者不支持 POST 请求的情况下,很多获取被星号脱敏的密码的明文的方法就失效了。
这时候就可以利用 Eclipse Memory Analyzer 工具来分析 /heapdump 或 /actuator/heapdump 接口下载的 jvm heap 信息,查找密码明文。

利用

1 直接下载http://xx.xx.xx.xx/heapdump 或者http://xx.xx.xx.xx/actuator/heapdump (spring2.x 修改了路径)

2 这时候就可以利用 Eclipse Memory Analyzer 工具来分析 /heapdump 或 /actuator/heapdump 接口下载的 jvm heap 信息,查找密码明文

3 使用 Eclipse Memory Analyzer 直接打开下载的 heapdump 文件,点击 OQL 标签,在查询框中输入,再点击感叹号运行下列语句。前者Spring1.x 后者Spring2.x

1
2
3
select * from org.springframework.web.context.support.StandardServletEnvironment
或者
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))

4 成功查询到密码,结合/env页面泄漏的信息可以知道是jdbc还是邮箱的密码等
-w1187

思考

1 select语句中的关键字password替换为其他mail关键字进行fuzz

2 heapdump 泄漏的反序列化点是否可以被我们黑盒利用

3 可以结合/env页面泄漏的信息猜测其他敏感内容rce,比如sso的ak和sk等

参考

欢迎查看无尾熊blog
spring boot 获取被星号脱敏的密码的明文
xray社区记一次信息泄漏到RCE






© - 无尾熊 - 2019 - 2021 - Powered by hexo