Авторские курсы Михаила Тарасова

Blind LDAP Injection: Ломай Active Directory через слепую зону

Blind LDAP Injection: Ломай Active Directory через слепую зону

Эй, бро, если ты думал, что LDAP — это просто скучная хрень для авторизации, где хранятся логины твоих коллег, то ты глубоко ошибаешься. Это золотая жила для багхантеров, особенно когда админы оставляют дыры в фильтрах. Blind LDAP Injection — это как играть в «горячо-холодно» с сервером, пока он сам не выдаст тебе пароль доменного админа. В этой статье я, твой кореш, покажу, как выудить данные из LDAP, даже если сервер не отвечает тебе прямым текстом. Готовь Burp и кофе, ща будет жарко.

Точка входа

Что вижу: Уязвимость в обработке пользовательского ввода, который идёт в LDAP-фильтр, например, в логин-форме или поисковом эндпоинте. Типичный косяк — строка (&(uid={input})(objectClass=user)), где {input} не фильтруется и пихается прямо в запрос.
Как поймал: Инструмент — Burp Suite для перехвата + кастомный фаззер на Python с библиотекой ldap3 для теста инъекций. Метод: подстановка классических LDAP-пейлоадов вроде *)(uid=* и проверка на различия в ответах сервера (тайминг или коды ошибок).
Чем пахнет: Класс — Blind LDAP Injection с потенциалом дампа учётных данных или эскалации до доменного админа. Вероятность эксплойта — 7/10, если фильтрация на уровне «да похер».

Чё почём

Эксплойт: Держи рабочий подход, братан, без всяких «замени IP на свой». Если у тебя есть логин-форма, которая отправляет username в LDAP, лови слепую инъекцию для проверки:

Этот пейлоад пытается подставить *)(uid=* в фильтр, чтобы запрос стал (&(uid=*)(uid=*))(objectClass=user)), что часто возвращает «успешный» ответ или ошибку, если фильтр сработал. Главное — лови разницу в поведении сервера: если на *)(uid=* ответ 200, а на *)(uid=admin задержка или другой код — ты на верном пути.

Обход защиты: Если сервер режет звёздочки или скобки, используй альтернативные кодировки или пробелы:

WAF’ы часто пропускают URL-encoded пейлоады, думая, что это просто кривой запрос.

Доказательство: Смотри на ответы. Если на пейлоад *)(uid=admin сервер отвечает 200 или долго думает, а на *)(uid=notadmin выдаёт 403 — поздравляю, ты вычислил учётку админа слепым методом. Скриншоти тайминг (например, через Burp Repeater с таймером) — это твой PoC для баг-баунти, а не фотка кота.

Советы

LDAP — это как твой старый роутер: выглядит надёжно, а внутри дыры из 2005 года. Если зацепился за Blind Injection, вот три вектора для добивания:

  1. Энумерация учёток через тайминг-атаки: Пробуй перебирать имена типа *)(uid=admin и *)(uid=user1, смотри на задержки. Используй скрипт на Python с ldap3 для автоматизации.

  2. Вытаскивание атрибутов: Если сервер выдаёт разные ответы на фильтры, попробуй *)(sAMAccountName=admin или *)(userPassword=* — иногда можно угадать поля через слепую инъекцию.

  3. Комбинированный подход с Kerberos: Если выудил имя админа, врубай атаку Kerberoasting через GetUserSPNs.py из Impacket, чтобы сломать Service Principal Names и вытащить хэши.

План атаки:

  1. Перехватывай запросы через Burp, ищи поля (логин, поиск), которые могут идти в LDAP-фильтр.

  2. Фаззи их с классикой: *)(uid=*admin)(objectClass=*, и смотри на ответы (коды, тайминг).

  3. Если есть различия в поведении — автоматизируй перебор через Python-скрипт или Burp Intruder. Цель — найти валидные учётки (типа admin или service_account).

  4. Используй найденные данные для брута или комбинируй с другими атаками на Active Directory.

Если всё глухо — иди спать, бро. Или попробуй ещё один вектор: пихай пейлоады вида *)(|(uid=admin)(uid=user)), чтобы обойти простые фильтры через оператор OR.

Бонус:

  • Проверь robots.txt и sitemap.xml — там часто валяются /ldap-debug или /api/users, где можно подсмотреть схему запросов.

  • Если видишь JWT в куках, ломай через jwt_tool -I -pc name -pv admin и ищи слабый alg: none.

  • Скань на 169.254.169.254/latest/meta-data — вдруг токены AWS вывалятся, как мой старый доступ к тестовому серверу.

  • Если всё плохо — заливай reverse-shell в EXIF картинок для аватарок. Да, это низко. Да, это работает.

Blind LDAP Injection — это как шахматы с сервером: ход за ходом ты выманиваешь у него секреты, пока не станешь королём домена. Пиши отчёт, лови бабки на баг-баунти.

Мои курсы