目录
介绍
复现
Actuator目录下可能利用泄漏信息的路径
利用
思考
处理意见
介绍
事先得到同意对朋友公司的网站进行了扫描,扫出了一个Actuator未授权,于是开始复现并记录一下,最后获取了redis的密码
复现
这里是请求包
响应包成功返回了200,并且返回了里面的数据,证明路径api下的actuator是可以访问的
对api/actuator/ 这个路径进行访问
可以看到返回了很多信息
Actuator目录下可能利用泄漏信息的路径
/dump - 显示线程转储(包括堆栈跟踪)
/autoconfig - 显示自动配置报告
/configprops - 显示配置属性
/trace - 显示最后几条HTTP消息(可能包含会话标识符)
/logfile - 输出日志文件的内容
/shutdown - 关闭应用程序
/info - 显示应用信息
/metrics - 显示当前应用的’指标’信息
/health - 显示应用程序的健康指标
/beans - 显示Spring Beans的完整列表
/mappings - 显示所有MVC控制器映射
/env - 提供对配置环境的访问
/restart - 重新启动应用程序
利用
接着访问下actuator下的env
可以看到有很多系统的配置信息
这里我们就找一下有用的东西,直接搜索******看看有哪些密码或者敏感信息被加密了
可以看到被加密的数据有redis的密码
接下来直接访问api/actuator/heapdump这个路径,对heapdump这个文件进行下载到本地
通过jdk自带的工具打开这个heapdump文件,工具在jdk目录下jdk/bin/jvisualvm.exe
这里记得改一下文件类型
打开后会显示一些基本信息,不过都是没用的,咱们的最终目标是获取redis的密码。
点击OQL控制台
输入
select s from java.util.LinkedHashMap$Entry s where /spring.redis.password/.test(s.key)
进行查询
这里的spring.redis.password为刚才在env下看到的存放redis密码的索引也就是
同理,除了可以对spring.redis.password进行查询,也可以对security.oauth2.client.client-secret和sun.java.command的值进行查询
点击进入,查看详情
思考
看到这个redis的密码后在思考一个问题,为什么密码的开头要用大写,redis的密码没有要求强制设置复杂度,甚至可以设置成123456或者无密码。所以可以尝试通过此密码对对方服务器上所有开放的可以登录的服务进行撞库,也可以尝试登录后台管理员。
处理意见
1.因为这些明文密码都是通过heapdump这个文件来获取的,可以禁止对heapdump的下载
2. 设置单独的 Actuator 管理端口并配置不对外网开放