
LdapNightmare — это PoC-инструмент, который проверяет уязвимый Windows Server на наличие CVE-2024-49113.
Эксплойт для CVE-2024-49113, о котором сообщил Yuki Chen (@guhe120). Уязвимость в протоколе Windows Lightweight Directory Access Protocol (LDAP).
Создано SafeBreach Labs (опубликовано 1 января 2025 года). Полный технический анализ уязвимости и описание того, как нам удалось её эксплуатировать, читайте в блоге здесь
CVE-2024-49113 — это критическая уязвимость в LDAP-клиенте Windows, которая, по заявлению Microsoft, позволяет удалённо выполнять код. Этот эксплойт использует уязвимость для вызова сбоя целевых систем Windows Server путём взаимодействия с их протоколом Netlogon Remote Protocol (NRPC) и LDAP-клиентом.
https://github.com/user-attachments/assets/1cbda4a9-943a-4e07-a95a-b20e45863ec3
Установка зависимостей:
Убедитесь, что все необходимые пакеты Python установлены. Вы можете установить их с помощью pip и предоставленного файла requirements.txt:
pip install -r requirements.txt
Настройка эксплойта:
target_ip: IP-адрес целевой машины.port: TCP-порт для RPC-взаимодействия (по умолчанию: 49664).listen_port: UDP-порт, на котором сервер эксплойта прослушивает входящие подключения (по умолчанию: 389). Если порт не изменён, инструмент необходимо запускать с правами администратора или root.domain_name: доменное имя в интернете, принадлежащее атакующему. Для этого домена должны существовать две DNS SRV-записи (SRV-записи сопоставляют домен с портом и другим доменом):
domain_name -> listen_port attacker's machine hostnamedomain_name -> listen_port attacker's machine hostnameattacker's machine hostname будет работать при условии, что сервер-жертва сможет найти машину атакующего по её hostname с помощью NBNS. Вместо hostname атакующего это значение можно заменить на доменное имя в интернете, которое указывает на IP-адрес вредоносного LDAP-сервера, эксплуатирующего уязвимость.account: параметр имени учётной записи (по умолчанию: Administrator).site_name: параметр имени сайта (по умолчанию: пустая строка).python LdapNightmare.py <target_ip> --domain-name <domain_name> [options]
Пример:
python LdapNightmare.py 192.168.1.100 --domain-name example.com
Запуск сервера эксплойта:
Скрипт запускает асинхронный LDAP-сервер, который прослушивает входящие подключения на указанном UDP-порту.
Вызов DsrGetDcNameEx2:
Скрипт вызывает функцию DsrGetDcNameEx2 через Netlogon Remote Protocol, чтобы заставить сервер-жертву отправить LDAP-запрос атакующему.
Срабатывание уязвимости:
Отправляя специально сформированный ответ, эксплойт вызывает срабатывание уязвимости CVE-2024-49113, что приводит к сбою сервера-жертвы.
| Or Yair | Shahak Morag | |
|---|---|---|
| Or Yair | Shahak Morag | |
| @oryair1999 | @shahakmo |