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.html2、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.html4、指定扫描
.\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"

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云debian服务器的连接与初始化

目录 1. 远程连接2. 软件下载3. 设置开机自启动 1. 远程连接 腾讯云给的服务器在安装好系统之后&#xff0c;只需要在防火墙里面添加一个白名单&#xff08;ip 或者域名&#xff09;就能访问了。 浏览器打开https://www.ipip.net/&#xff0c;在左下角找到自己所用的WIFI的公…

java使用面向对象实现图书管理系统

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

MFC静态链接+libtiff静态链接提示LNK2005和LNK4098

编译报错 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_infoAAEABV0Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "pr…

Jenkins Docker Cloud在Linux应用开发CI中的实践

Jenkins Docker Cloud在Linux应用开发CI中的实践 背景 通过代码提交自动触发CI自动构建、编译、打包是任何软件开发组织必不可少的基建&#xff0c;可以最大程度保证产物的一致性&#xff0c;方便跨组跨部门协作&#xff0c;代码MR等。 Docker在流水线中越来越重要&#xff…

解决Maven找不到依赖的问题

如果经过Reload Maven项目&#xff0c;清除Idea缓存&#xff0c;甚至重启Idea等方法都解决不了Dependency xxx not found的问题&#xff0c;不妨试试手动安装。 1. 进入maven仓库&#xff0c;搜索自己需要的对应版本的依赖。 2. 点击下图红框jar图标下载对应的jar包&#xff0c…

[德人合科技]——设计公司 \ 设计院图纸文件数据 | 资料透明加密防泄密软件

国内众多设计院都在推进信息化建设&#xff0c;特别是在异地办公、应用软件资产规模、三维设计技术推广应用以及协同办公等领域&#xff0c;这些加快了业务的发展&#xff0c;也带来了更多信息安全挑战&#xff0c;尤其是对于以知识成果为重要效益来源的设计院所&#xff0c;防…

MyBatis-Plus如何 关闭SQL日志打印

前段时间公司的同事都过来问我&#xff0c;hua哥公司的项目出问题了&#xff0c;关闭不了打印sql日记&#xff0c;项目用宝塔自己部署的&#xff0c;磁盘满了才发现大量的打印sql日记&#xff0c;他们百度过都按照网上的配置修改过不起作用&#xff0c;而且在调试时候也及为不方…

软件设计模式:六大设计原则

文章目录 前言一、开闭原则二、里氏替换原则三、依赖倒转原则四、接口隔离五、迪米特法则六、合成复用原则总结 前言 在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程序员要尽量根据6条原则来开发程序&am…

STM32_窗口看门狗

什么是窗口看门狗&#xff1f; 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测 程序运行时间的场合。 窗口看门狗的本质是一个能产生 系统复位信号 和 提前唤醒中断 的 6 位计数器 产生复位条件&#xff1a; 当…

数组循环左移

数组循环左移是指将数组的元素向左移动一定的位置&#xff0c;使得数组的最后一个元素移动到数组的第一个位置&#xff0c;数组的倒数第二个元素移动到数组的第二个位置&#xff0c;以此类推。 以下是一个示例代码&#xff0c;演示如何实现数组循环左移&#xff1a; def rota…

力扣题目学习笔记(OC + Swift) 14. 最长公共前缀

14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 方法一 竖向扫描法 个人感觉纵向扫描方式比较直观&#xff0c;符合人类理解方式&#xff0c;从前往后遍历所有字符串的每一列&#xff0c;比较相同列上的…

服务器解析漏洞是什么?攻击检测及修复

服务器解析漏洞&#xff08;Server-side Include Vulnerability&#xff0c;SSI漏洞&#xff09;是一种安全漏洞&#xff0c;通常出现在支持服务器端包含&#xff08;SSI&#xff09;功能的Web服务器上。SSI是一种在Web页面中嵌入动态内容的技术&#xff0c;允许开发人员将外部…

Gradle中 Implementation 与API 声明依赖方式的对比

在Gradle中&#xff0c;implementation和api是声明依赖的两种方式&#xff0c;它们在如何暴露依赖关系方面有所不同&#xff1a; Implementation: 当一个模块使用implementation声明依赖时&#xff0c;该依赖仅对声明它的模块可见。这意味着该依赖对于该模块的消费者是隐藏的。…

Android 架构 - 组件化

一、概念 组件化是对单个功能进行开发&#xff0c;使得功能可以复用。将多个功能组合起来就是一个业务模块&#xff0c;因此去除了模块间的耦合&#xff0c;使得按业务划分的模块成了可单独运行的业务组件。&#xff08;一定程度上的独立&#xff0c;还是依附于整个项目中&…

如何使用支付宝的沙箱环境在本地配置模拟支付并发布至公网测试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…

vue关闭当前路由页面并跳转到其父页面

1.dom中添加关闭或取消按钮 <el-button type"primary" class"blueLinearbg cancelBtn" click"cancel" >取 消</el-button>2.cancel方法中 /*取消或关闭*/cancel(){this.$store.dispatch("tagsView/delView", this.$route)…

Floating point exception

参考:https://blog.csdn.net/yyangzhenjie/article/details/87859506?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-87859506-blog-126091159.235%5Ev39%5Epc_relevant_3m_sort_dl_base2&depth_1-ut…

el-table 实现行拖拽排序

element ui 表格实现拖拽排序的功能&#xff0c;可以借助第三方插件Sortablejs来实现。 引入sortablejs npm install sortablejs --save组件中使用 import Sortable from sortablejs;<el-table ref"el-table":data"listData" row-key"id" …

牛客BC115 超级圣诞树

万众瞩目 在上一篇我们介绍了一个圣诞树的打印&#xff0c;而这道题与上次不同的是他的基本单位是一直在变的 我建议先把上一个搞懂在写这道题这个。 牛客网BC114 圣诞树-CSDN博客 ok那么正文开始 题目如下 今天是圣诞节&#xff0c;牛牛要打印一个漂亮的圣诞树送给想象中…

pg课堂笔记-新版本特性和版本升级

为什么要升级 版本特性:一年一个大版本,三个月一个小版本 9.4支持 jsonb ​ 9.6 支持并行 ​ 10 支持逻辑复制和声明分区 ​ 11 支持jit 、存储过程 ​ 14 引入 idle_session_timeout ​ 15 逻辑复制有大幅度提升 ​ 16 支持standby logical replication ,并行回放, 以及 …