Actuator内存泄露及利用Swagger未授权自动化测试实现

目录

0x00 前言

0x01 Actuator 泄露及利用

1、Actuator heapdump 内存泄露

2、知道泄露后如何进一步利用

3、如何发现 Actuator 泄露(白盒/黑盒)

0x02 Swagger自动化测试

1、什么是Swagger?

2、Postman+BurpSuite+Xray 联动

3、思考


0x00 前言

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢! 

个人博客链接:CH4SER的个人BLOG – Welcome To Ch4ser's Blog

0x01 Actuator 泄露及利用

1、Actuator heapdump 内存泄露

SpringBoot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理Spring Boot应用。

JavaSec 靶场介绍:本项目使用JAVA "1.8.0_112" 基于Spring boot + layuimini 进行开发实现

点击访问后可以看到 Actuator 页面:

Actuator 页面是一个用于监控和管理 Spring Boot 应用程序的页面。它提供了一系列的端点(endpoints),这些端点可以用于获取应用程序的健康状况、性能指标、运行时信息等。

通过访问 Actuator 页面,可以方便地查看应用程序的运行状态和性能情况,从而帮助开发者监控和调试应用程序。Actuator 页面可以通过浏览器访问,一般默认路径是 “/actuator”。

接着访问 env 端点,看到了环境变量配置信息,如数据库密码,但是显示为 * 号,这时就要下载 heapdump 文件分析:

env 是一个用于查看应用程序的环境变量的端点(Endpoint),通过访问/actuator/env端点,可以获取应用程序当前运行环境的所有环境变量信息。

在开发和调试过程中,查看env端点可以帮助开发人员了解应用程序运行时的环境变量配置情况,方便进行问题排查和调优。

但是如果因为配置不当将 env 端点暴露,可能会造成敏感信息泄露的问题。

访问 heapdump 端点,下载 heapdump 文件并使用工具分析:

heapdump 是一个用于生成Java堆转储文件的端点(Endpoint),通过访问/actuator/heapdump端点,可以下载当前Java应用程序的堆转储文件。

通俗的讲,heapdump 文件就是当前项目的内存文件,通过特定工具分析能够造成内存泄露的问题。

使用工具 heapdump_tool.jar 分析如下:

java -jar .\heapdump_tool.jar .\heapdump

推荐选择模式 1,也就是全局模式,然后输入要找的关键字(有提示的模板,比如 password、shirokey 等),这里分析出了我的数据库连接密码。

用其他工具也行,比如 JDumpSpider-1.1-SNAPSHOT-full.jar,这款工具是直接将分析结果全部呈现出来,但是听说有些分析不出来

java -jar .\JDumpSpider-1.1-SNAPSHOT-full.jar .\heapdump

2、知道泄露后如何进一步利用

工具 SpringBootExploit-1.3-SNAPSHOT-all.jar:该工具首先检测有无 heapdump 泄露,然后根据泄露的信息(如项目所加载的类)判断有无其他漏洞(JNDI 注入导致的 RCE)利用的可能

如下,点击检测环境后,日志显示存在 jolokia logback JNDI RCE 漏洞

既然是 JNDI 注入,那么我们就要配置服务器地址(也就是远程恶意类存放的地址),这里用配套的工具:JNDIExploit-1.3-SNAPSHOT.jar,具体使用如下:

java -jar .\JNDIExploit-1.3-SNAPSHOT.jar -i 127.0.0.1 -l 1389 -p 3456
-i:服务器绑定的IP地址
-l:LDAP监听端口
-p:HTTP监听端口

然后回到工具 SpringBootExploit-1.3-SNAPSHOT-all.jar 这边,点击连接看能否连上,看到连接成功

选择 jolokia logback JNDI RCE 利用链并检测,日志显示漏洞利用失败,按理来说应该显示植入冰蝎内存马成功,怀疑是 JDK 版本问题,但是换了 8u112 也不行。

但是很奇怪的是工具 JNDIExploit-1.3-SNAPSHOT.jar 这边显示成功植入了内存马

最后尝试将 PhpStudy 的 WAMP 全部开启成功植入(错误原因之前我只开启了 MySQL)

使用冰蝎 4.0 连接成功(冰蝎 3.0 不行),jolokia logback JNDI RCE 复现完毕。

3、如何发现 Actuator 泄露(盒/黑盒)

对于白盒审计有无 Actuator 泄露:(以下两个条件都要成立)

  • 看 pom.xml 或 External Libraries 里有没有用到 Actuator 组件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

  • 看 application.properties 里有没有设置全部暴露 Actuator

management.endpoints.web.exposure.include=*

对于黑盒发现 Actuator 泄露:

首先要找到 SpringBoot 框架的网站,可以通过 Fofa 语法:body="Whitelabel Error Page" && icon_hash="116323821",即根据报错页面和图标 hash匹配

然后使用 BurpSuite 插件 APIKit 测试有无 Actuator 泄露:该插件支持多种 API 接口的指纹识别,其中就包括 Actuator,并且所有 BurpSuite 的流量都会经过该插件

首先将 APIKit.jar 导入到 BurpSuite:

然后开启 BurpSuite 代理,鼠标点点点就行了,流量会自动经过 APIKit,可以看到已经检测到了 Atuator 泄露

0x02 Swagger自动化测试

1、什么是Swagger?

Swagger是一个用于生成、描述和调用 RESTful 接口的 Web 服务,Swagger 能将项目中所有设置暴露的接口展现在页面上。简而言之,Swagger就是一个方便开发人员进行接口开发和测试的工具。

基于安全的角度,可以利用 Swagger 针对接口进行漏洞测试,但接口数量往往是很多的,所以我们一般会采用自动化接口漏洞安全测试。

2、Postman+BurpSuite+Xray 联动

首先进入靶场(炼石计划 RefiningStone)的 Swagger 页面 swagger-ui.html,观察到有许多接口的测试点,而对于自动化联动测试更重要的是图中标红的 API 文档地址,等会需要填到 Postman 里

接着打开 Postman,粘贴 API 文档的链接地址,然后 Continue - Import 即可导入

按照图示操作 Run 就行了,建议勾选上 Save Responses 保存响应

Run 之后可能会报错,大概率是上个界面的 Variables 变量设置有问题,多了两个 // 号,去掉然后保存重新 Run 即可

Postman 自动化测试结果如下,但很奇怪的是返回码竟然都是 200,按理来说 Postman 是没有登录状态的,应该有很多 500 才对

现在考虑把 Postman 的流量转到 BurpSuite 上去,也就是说要在 Postman 里设置走 BurpSuite 代理,我的 BurpSuite 代理默认是本地 8080 端口,所以在 Postman 按照如下设置即可

在 Postman 那边重新 Run 之后,可以看到 BurpSuite - Proxy - HTTP History 里已经接收到了流量

现在考虑再将 BurpSuite 的流量转发到本地某个端口上去(这里我设置的 7777),具体设置是在 Settings - Network - Connections 里,然后让 Xray 监听 7777 端口并漏扫

BurpSuite + Xray 联动参考:Xray+burp联动使用(被动扫描)_xray被动扫描_小小丸子551的博客-CSDN博客

常用操作命令:

1、使用基础爬虫爬取并扫描整个网站
.\xray_windows_amd64.exe webscan --basic-crawler http://wordy/ --html-output proxy.html

2、windows xray版单个url检测
.\xray_windows_amd64.exe webscan --url "http://example.com/?a=b"

3、使用http代理发起被动扫描
.\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output test.html

4、指定扫描
.\xray_windows_amd64.exe webscan --plugins cmd_injection,sqldet --url http://test.com
.\xray_windows_amd64.exe webscan --plugins cmd_injection,sqldet --proxy 127.0.0.1:8888

这里肯定是使用被动扫描,命令如下:

.\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output test.html

然后重新在 Postman 那边 Run 一下,Xray 就能进行漏扫了,如此一来实现了 Postman+BurpSuite+Xray 的联动

3、思考

观察到 Postman 流量的 User-Agent 带有很明显的 Postman 特征,这明显是不合理的,后期我会把这个坑给填上

FOFA 语法:app="Swagger" && country="CN"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/260862.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

XC8284B 高效率12MHz,34V升压LED驱动器 LED背光驱动、闪光灯

XC8284B是一个升压转换器驱动多达9个系列白色LED的单节离子电池设计的。其300mV反馈电压降低功率损耗&#xff0c;提高效率。优化后的工作频率可以满足LC滤波器小值和低工作电流的要求&#xff0c;具有较高的效率。内置软启动功能&#xff0c;可减少浪涌电流。微型封装类型为节…

TensorRT 简单介绍

一、TensorRT 对于算法工程师来说&#xff0c;相信大家已经对TensorRT耳熟能详了&#xff0c;那么这个TensorRT是什么呢&#xff1f; 其实&#xff0c;TensorRT是一个可以在NVIDIA各种GPU硬件平台下运行的推理引擎&#xff0c;同时也是一个高性能的深度学习推理优化器&#x…

在ClickHouse数据库中启用预测功能

在这篇博文中&#xff0c;我们将介绍如何将机器学习支持的预测功能与 ClickHouse 数据库集成。ClickHouse 是一个快速、开源、面向列的 SQL 数据库&#xff0c;对于数据分析和实时分析非常有用。该项目由 ClickHouse&#xff0c; Inc. 维护和支持。我们将探索它在需要数据准备以…

SDK和API的区别

简单一句话&#xff1a;api就是一个函数接口&#xff0c;函数内容的功能无法独立运行&#xff0c;只有连接到服务器才可以发挥作用。 sdk是开发工具包&#xff0c;含有功能和函数接口&#xff0c;可以独立运行。 废话篇&#xff1a; 内容不同&#xff1a;SDK为API 提供能量源。…

【扩散模型】8、DALL-E2 | 借助 CLIP 的图文对齐能力来实现文本到图像的生成

文章目录 一、背景二、方法2.1 Decoder2.2 Prior 三、图像控制3.1 Variations3.2 Interpolations3.3 Text Diffs 四、探索 CLIP 的潜在空间五、文本到图像的生成5.1 先验的重要性5.2 人类评价5.3 多样性和保真性的平衡5.3 在 COCO 上对比 论文&#xff1a;DALLE.2 代码&#x…

Redis 中的 RDB 和 AOF 持久化机制

一、Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性&#xff0c;数据持久化可以保证系统在发生宕机和重启后数据不会丢失&#xff0c;对于 redis 这种存储在内存中的数据库显得尤为重要。 在 Redis 4.0 以前数据持久化的方式主要有两种 RDB&#xff08;Redi…

初学gitrepo的种种

经过各种折腾之后&#xff0c;发现git其实还是很简单的&#xff1b; 首先你需要两台机器&#xff0c;一台作为服务器&#xff0c;一台作为开发机器&#xff0c;开发机器从服务器上拉取代码。 目 目录 git建仓 开发机器拉取代码 初始化仓代码 repo管理 repo工具的下载 …

Ansible的脚本---Playbook剧本编写

playbook的组成部分 1、 tasks&#xff1a;任务 在目标主机上需要执行的操作。使用模块定义这些操作。每个任务都是一个模块的调用。 2、 variables&#xff1a;变量 用于存储和传递数据。类似于shell脚本中的变量。变量可以自定义。可以在playbook当中定义为全局变量&…

Go 语言实战:掌握正则表达式的应用与技巧

Go 语言实战&#xff1a;掌握正则表达式的应用与技巧 1. 引言2. 正则表达式基础2.1 基本概念2.2 常见元素2.3 基本示例 3. Go语言中的正则表达式库3.1 引入regexp包3.2 编译正则表达式3.3 使用正则表达式3.4 示例代码 4. 常用正则表达式函数及使用示例4.1 MatchString4.2 FindS…

配置自定义RedisTemplate 解决redis序列化java8 LocalDateTime

目录 配置自定义RedisTemplate 引入依赖 配置连接redis 编写测试类 出现问题 配置序列化 解决redis序列化java8 LocalDateTime 问题背景 问题描述 问题分析 解决方案一&#xff08;全局&#xff09; 解决方案二&#xff08;单个字段&#xff09; 配置自定义RedisTe…

在GitHub找开源项目

在 GitHub 的搜索框里&#xff1a; 使用搜索关键词可以在 GitHub 上快速的找你需要的开源项目&#xff1a; 限制搜索范围 通过 in 关键词 (大小写不敏感) 限制搜索范围&#xff1a; 公式搜索范围in:name xxx项目名包含xxxin:description xxx项目描述包含xxxin:readme xxx项目…

thymeleaf的个人总结

thymeleaf的java代码的用法 <!-- 静态页面模版引擎的依赖 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 我们在这里要配置一个具体的模版…

CVE-2023-37582 Apache RocketMQ NameServer远程代码执行漏洞

上集回顾 CVE-2023-33246 RocketMQ RCE漏洞 影响版本 Apache RocketMQ NameServer 5.0.0 &#xff5e; 5.1.1 Apache RocketMQ NameServer 4.0.0 &#xff5e; 4.9.6 参考 https://xz.aliyun.com/t/12691 环境搭建 拉取镜像 docker pull apache/rocketmq:4.9.6 docker …

Bugku- misc-插画-WP

下载得到一个zip&#xff0c;用WinRAR打开时发现有注释 注释&#xff1a; RnJlZV9GaWxlX0NhbW91ZmxhZ2UsIOmimOebruWlveWDjaYraMuumHjeimgeeahOagtWtkC4u 明显是base64&#xff0c;解码得到&#xff1a;Free_File_Camouflage, 题目好像是挺重要的样子… 百度发现这是一款隐写…

微电网优化(Matlab复现)— 微电网两阶段鲁棒优化经济调度方法_刘一欣

论文链接&#xff1a;微电网两阶段鲁棒优化经济调度方法 - 中国知网 代码链接&#xff1a;https://m.tb.cn/h.5Mg7fCo?tkhnpmWgZiv2R 复现效果&#xff1a; 运行环境&#xff1a;Matlab 2020bCplexyalmip 1 微电网结构 图 1 所示为典型的微电网结构&#xff0c;由可控分布式…

uniapp实现豆瓣电影微信小程序(附源码)

演示 运行 基于本地代理1 npm run dev:proxy1基于本地代理2 npm run dev:proxy2基于nginx 代理 npm run dev:nginx目录结构 |__ douban # 本地代理|__ app.js # 方式 1|__ proxy.js …

基于vue-cli快速发布vue npm 包

一、编写组件 1. 初始化项目并运行 vue create vue-digital-countnpm run serve2. 组件封装 新建package文件夹 ​ 因为我们可能会封装多个组件&#xff0c;所以在src下面新建一个package文件夹用来存放所有需要上传的组件。 ​ 当然&#xff0c;如果只有一个组件&#xff…

SQL面试题挑战01:打折日期交叉问题

目录 问题&#xff1a;SQL解答&#xff1a;第一种方式&#xff1a;第二种方式&#xff1a; 问题&#xff1a; 如下为某平台的商品促销数据&#xff0c;字段含义分别为品牌名称、打折开始日期、打折结束日期&#xff0c;现在要计算每个品牌的打折销售天数&#xff08;注意其中的…

【yolov8系列】 yolov8 目标检测的模型剪枝

前言 最近在实现yolov8的剪枝&#xff0c;所以有找相关的工作作为参考&#xff0c;用以完成该项工作。 先细读了 Torch-Pruning&#xff0c;个人简单记录了下 【剪枝】torch-pruning的基本使用&#xff0c;有框架完成的对网络所有结构都自适应剪枝是最佳的&#xff0c;但这里没…

Redis 系统性总结看这一篇就够了

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 之前在公司一直忙于使用&#xff0c;很少做系统性的总结&a…