Samres27/CVE-2026-25769---CVE-2026-25770

GitHub: Samres27/CVE-2026-25769---CVE-2026-25770

Wazuh 集群反序列化与路径遍历漏洞链 PoC,演示从 worker 节点到 master 节点的权限提升与远程命令执行。

Stars: 0 | Forks: 0

# CVE-2026-255769 / CVE-2026-255770 – Wazuh 集群漏洞 ## 描述 在 Wazuh 集群配置(版本 ≥ 4.0.0)中发现了两个严重的漏洞。这些缺陷影响了使用多节点进行水平扩展、负载均衡和高可用性的部署。此配置允许管理多个 agent,而不会影响 Wazuh 服务器。 - CVE-2026-255769 允许通过 DAPi 请求在 master 和 worker 之间进行通信。Worker 使用其 `LocalClient` 模块发送一个对象;master 接受该消息并使用存在漏洞的 `as_wazuh_object()` 函数对对象进行反序列化,从而允许在 master 上执行命令。 - CVE-2026-255770 此漏洞是对前一个漏洞的补充,允许使用 `` 和 `` 标签执行命令。攻击者可以在每次加载 `/var/ossec/etc/ossec.conf` 配置文件时执行命令。 在那些使用集群功能的环境中,这两者均可造成[总体影响:权限提升、远程执行等]。 ## 受影响的版本 - Wazuh manager ≥ 4.0.0(直至修复版本 X.Y.Z) - 所有启用了节点间通信且角色为 `master` 或 `worker` 的节点。 ## 背景:Wazuh 中的集群 集群配置用于具有大量 agent 的部署中。它允许: - 水平扩展:添加更多 worker 节点以分担负载。 - 高可用性:如果一个 worker 节点发生故障,其他节点将继续运行,直到该节点恢复。 - 负载均衡:Agent 分布在各个 worker 之间。 如果此架构未得到适当保护,则可能会暴露出本文档中记录的攻击向量。 ## 技术细节 ### CVE-2026-255769 Master 调用此函数,该函数允许创建执行任意命令的子进程。 ``` def as_wazuh_object(dct: Dict):     try:         if '__callable__' in dct:             encoded_callable = dct['__callable__']             funcname = encoded_callable['__name__'] #getoutput             if '__wazuh__' in encoded_callable:                 # Encoded Wazuh instance method.                 wazuh = Wazuh()                 return getattr(wazuh, funcname)             else:                 # Encoded function or static method.                 qualname = encoded_callable['__qualname__'].split('.') # getoutput                 classname = qualname[0] if len(qualname) > 1 else None                 module_path = encoded_callable['__module__']  #  subprocess                 module = import_module(module_path)            #  ARBITRARY IMPORT                 if classname is None:                     return getattr(module, funcname)           #  RETURNS ARBITRARY FUNCTION                 else:                     return getattr(getattr(module, classname), funcname) ``` ``` def as_wazuh_object(dct: Dict):     try:         if '__callable__' in dct:             encoded_callable = dct['__callable__']             funcname = encoded_callable['__name__'] #getoutput             if '__wazuh__' in encoded_callable:                 # Encoded Wazuh instance method.                 wazuh = Wazuh()                 return getattr(wazuh, funcname)             else:                 # Encoded function or static method.                 qualname = encoded_callable['__qualname__'].split('.') # getoutput                 classname = qualname[0] if len(qualname) > 1 else None                 module_path = encoded_callable['__module__']  #  subprocess                 module = import_module(module_path)            #  ARBITRARY IMPORT                 if classname is None:                     return getattr(module, funcname)           #  RETURNS ARBITRARY FUNCTION                 else:                     return getattr(getattr(module, classname), funcname) ``` ### CVE-2026-255770 Wazuh 集群协议 (TCP/1516) 使用该进程在节点之间同步文件。该进程以非特权用户身份运行,并接受相对路径。 ```         """Create a file descriptor to store the incoming file.         Parameters         ----------         data : bytes             Relative path to the file.         Returns         -------         bytes             Result.         bytes             Response message.         """         # VULNERABLE LINE: No validation of 'data', no checking for '../', direct file open.         self.in_file[data] = {'fd': open(common.WAZUH_PATH + data.decode(), 'wb'), 'checksum': hashlib.sha256()}         return b"ok ", b"Ready to receive new file"         ``` ```         """Create a file descriptor to store the incoming file.         Parameters         ----------         data : bytes             Relative path to the file.         Returns         -------         bytes             Result.         bytes             Response message.         """         # VULNERABLE LINE: No validation of 'data', no checking for '../', direct file open.         self.in_file[data] = {'fd': open(common.WAZUH_PATH + data.decode(), 'wb'), 'checksum': hashlib.sha256()}         return b"ok ", b"Ready to receive new file"         ``` 利用此配置,攻击者可以覆盖配置目录并执行命令。 ## 影响 攻击者可能会: - 影响机密性、完整性、可用性,并造成权限提升。 - 破坏整个受监控基础设施的完整性。 ## 概念验证 (PoC) 原始 PoC 由 [vikman90](https://github.com/vikman90) [vikman90](https://github.com/vikman90) 开发,并作为此分析的基础。下面是一个漏洞利用示例: ``` # 1. 初始化 docker compose docker compose up -d # 2. 等待初始化所有 clusters # 3. 验证 cluster 已连接 docker exec poc-master /var/ossec/bin/cluster_control -l # 预期输出应显示 worker01 已连接: # worker01 172.28.0.11 active # 4. 从 worker 执行 exploit docker exec poc-worker /var/ossec/framework/python/bin/python3 /scripts/poc.py # 5. 验证 master 上的 RCE docker exec poc-master cat /var/ossec/etc/ossec.conf ``` ``` # 1. 初始化 docker compose docker compose up -d # 2. 等待初始化所有 clusters # 3. 验证 cluster 已连接 docker exec poc-master /var/ossec/bin/cluster_control -l # 预期输出应显示 worker01 已连接: # worker01 172.28.0.11 active # 4. 从 worker 执行 exploit docker exec poc-worker /var/ossec/framework/python/bin/python3 /scripts/poc.py # 5. 验证 master 上的 RCE docker exec poc-master cat /var/ossec/etc/ossec.conf ```
标签:CISA项目, CVE-2026-255769, CVE-2026-255770, Insecure Deserialization, PE 加载器, PoC, RCE, Wazuh, Web报告查看器, 协议分析, 反序列化漏洞, 安全漏洞, 暴力破解, 权限提升, 概念验证, 编程工具, 网络安全, 节点通信, 请求拦截, 远程代码执行, 逆向工具, 配置注入, 隐私保护, 高危漏洞