当前位置: 首页 > news >正文

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

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
AI写代码

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

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

java -jar .\JDumpSpider-1.1-SNAPSHOT-full.jar .\heapdump
AI写代码

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

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

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

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

  1. java -jar .\JNDIExploit-1.3-SNAPSHOT.jar -i 127.0.0.1 -l 1389 -p 3456
  2. -i:服务器绑定的IP地址
  3. -l:LDAP监听端口
  4. -p:HTTP监听端口
AI写代码

然后回到工具 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 组件

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </dependency>
AI写代码

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

management.endpoints.web.exposure.include=*
AI写代码

对于黑盒发现 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. 1、使用基础爬虫爬取并扫描整个网站
  2. .\xray_windows_amd64.exe webscan --basic-crawler http://wordy/ --html-output proxy.html
  3. 2、windows xray版单个url检测
  4. .\xray_windows_amd64.exe webscan --url "http://example.com/?a=b"
  5. 3、使用http代理发起被动扫描
  6. .\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output test.html
  7. 4、指定扫描
  8. .\xray_windows_amd64.exe webscan --plugins cmd_injection,sqldet --url http://test.com
  9. .\xray_windows_amd64.exe webscan --plugins cmd_injection,sqldet --proxy 127.0.0.1:8888
AI写代码

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

.\xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output test.html
AI写代码

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

3、思考

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

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

http://www.lqws.cn/news/488287.html

相关文章:

  • 【软考高级系统架构论文】论面向方面的编程技术及其应用
  • 班翎流程平台 | 逐级审批支持多种选择模式
  • OpenHarmony中默认export 添加环境变量
  • 用html实现数字生命
  • 日志技术-Logback入门程序
  • Life:Internship in OnSea Day 1
  • 【nvidia-H100-ib排障实战2】:服务器 InfiniBand 网络性能问题深度分析
  • 深入理解JavaScript设计模式之迭代器模式
  • 【python实用小脚本-111】基于PyTorch的人脸口罩检测系统技术文档
  • 构建你的API防护盾 - 抵御恶意爬虫、注入与业务欺诈
  • qwen 的词编码模型中tokenid 到 高维向量是什么实现的,tokenid的排列有什么特点
  • 【Altium Designer】---- 02创建元器件符号和封装
  • 基本图算法介绍
  • Maven 之 JUnit 测试体系构建全解析
  • 淘宝直播带货API开发:弹幕抓取与商品点击热力图生成系统
  • 春秋云镜【CVE-2017-18349】fastjson wp
  • 从java到vue3:第一天
  • 支持向量机(SVM):数学引擎与工程实践深度解析——从最大间隔到核技巧的完整推导与应用
  • 【技术分享】XR技术体系浅析:VR、AR与MR的区别、联系与应用实践
  • 从 0 到 1 构建 Graph RAG 系统:本地图谱 + 通义千问落地实践
  • 【DeepSeek实战】2、DeepSeek特训:Function Calling与ReAct双引擎驱动大模型智能升级实战指南
  • Redis04
  • Solidity 入门教程(三):函数 Function 详解 —— 用对函数,写好合约
  • npm ci对比npm install
  • 榕壹云无人售货机管理系统:开源架构赋能私有化部署,打造智能零售技术解决方案
  • Angular进阶之十二:Chrome DevTools+Angular实战诊断指南
  • mfc与vs成功在xp系统所需做的修改
  • leetcode83.删除排序链表中的重复元素
  • mongoDB服务本地化部署
  • 利用栈,实现括号匹配功能