LDAP-инъекция

LDAP-инъекция — это вектор Атаки на Веб-приложения, при котором злоумышленник внедряет вредоносные символы в параметры запросов к LDAP-серверу (Lightweight Directory Access Protocol). В контексте Веб-разработки и информационной безопасности уязвимость возникает, когда Приложение конструирует Фильтры поиска или проверки подлинности путем прямой подстановки пользовательского ввода без должной санитизации. Эта атака позволяет обойти механизмы авторизации, получить Несанкционированный доступ к конфиденциальным данным каталога или модифицировать записи пользователей.

Главное

  • Атака эксплуатирует недостаточную фильтрацию спецсимволов в полях ввода, таких как Логин или поисковая строка.
  • Цель злоумышленника — изменение логики LDAP-фильтра для обхода пароля или извлечения всех записей каталога.
  • Уязвимость критична для систем SSO, корпоративных справочников (Active Directory) и CRM с интеграцией LDAP.
  • Защита требует экранирования специальных символов и использования параметризованных методов построения запросов.

Как работает LDAP-инъекция

Механизм Атаки основан на манипуляции синтаксисом LDAP-фильтров, которые строятся динамически на основе данных от пользователя. Если Разработчик не применяет санитизацию, злоумышленник может внедрить операторы логического И (&), ИЛИ (|) и НЕ (!), а также символы скобок и звездочки (*). Например, стандартный Фильтр вида (uid=USER) при подстановке вредоносного значения *)(uid=*))(|(uid=* превращается в выражение, которое возвращает все объекты каталога, игнорируя проверку пароля. Этот трюк часто используется в формах входа, где система проверяет существование пользователя по логину.

Кроме того, атака может использовать null-байты (\0) для обрезания части строки запроса, что позволяет игнорировать последующие условия безопасности, добавленные разработчиком. Процесс эксплуатации обычно делится на два этапа: сначала исследователь отправляет тестовые символы для определения наличия уязвимости по изменению времени ответа или кодов ошибок, а затем формирует полноценный эксплойт для эскалации привилегий или кражи чувствительных атрибутов, таких как хэши паролей или списки групп доступа.

Зачем нужен LDAP-инъекция

Вредоносное использование данной техники необходимо злоумышленникам для получения полного контроля над учетными записями и данными корпоративного каталога. Обход аутентификации является наиболее частой целью: внедрив условие, которое всегда истинно, атакующий получает доступ к системе без знания реальных учетных данных. Это особенно опасно в системах единого входа (SSO), где компрометация одной учетной записи может привести к доступу ко всем связанным ресурсам компании.

Помимо обхода защиты, техника применяется для разведки и сбора информации. Атакующие используют уязвимость для извлечения конфиденциальных атрибутов сотрудников, включая email-адреса, номера телефонов и внутренние IP-адреса. Эти данные затем используются для целевого фишинга (spear-phishing) или социальной инженерии. В сфере интернет-маркетинга такие утечки критичны для B2B-платформ и личных кабинетов клиентов, так как ведут к потере доверия партнеров и репутационным рискам.

Какие бывают виды ldap-инъекции

Классификация атак зависит от цели внедрения и способа получения результата. Первый тип — обход аутентификации, при котором Фильтр проверки логина и пароля модифицируется так, чтобы запрос возвращал положительный результат без действительных учётных данных. Второй тип — инъекция в поисковые Фильтры, которая применяется к полям поиска сотрудников или устройств, позволяя извлечь полный Список всех записей в каталоге независимо от прав доступа.

Третий важный вид — слепая LDAP-инъекция. В этом случае атакующий не видит результаты запроса напрямую в интерфейсе приложения, но определяет истинность условий по косвенным признакам, таким как Время отклика сервера или специфические коды ошибок. Также выделяют инъекцию в DN (distinguished name), которая направлена на изменение целевой записи для её удаления или модификации атрибутов, что может привести к нарушению работы сервисов или созданию бэкдоров.

Где используется LDAP-инъекция

Уязвимость встречается в Веб-приложениях, которые интегрированы с корпоративными каталогами, такими как Microsoft Active Directory, OpenLDAP или FreeIPA. Она актуальна для систем управления идентификацией, порталов самообслуживания сотрудников и CRM-систем, использующих LDAP для синхронизации учётных записей. В маркетинговой инфраструктуре риск высок для B2B-порталов, где доступ к клиентской базе ограничен через LDAP-группы, а также для рекламных кабинетов, использующих корпоративные учётные записи для авторизации.

Любая Точка входа, где пользовательский ввод передается в запрос к каталогу без экранирования, представляет угрозу. Это включает формы регистрации, функции восстановления пароля, модули поиска внутри административных панелей и API-интерфейсы для синхронизации данных между различными системами предприятия. Разработчикам необходимо проверять все входные данные, особенно если они используются для формирования сложных поисковых запросов.

Пример: установка и чтение ldap-инъекции

Для понимания принципа работы рассмотрим пример уязвимого кода на Python, который конструирует LDAP-запрос путем Простой конкатенации строк. В безопасном коде следует использовать методы библиотеки, обеспечивающие автоматическое экранирование специальных символов.

python
# Уязвимый код: прямая подстановка ввода пользователя
def search_user_vulnerable(username):
    # Злоумышленник может передать *)*(|(password=*)
    filter_string = "(uid=" + username + ")"
    results = ldap_connection.search_s(base_dn, ldap.SCOPE_SUBTREE, filter_string)
    return results

# Безопасный код: использование параметризованного запроса
def search_user_safe(username):
    # Библиотека автоматически экранирует спецсимволы
    filter_string = "(&(objectClass=person)(uid=%s))" % ldap.dn.escape_dn_chars(username)
    results = ldap_connection.search_s(base_dn, ldap.SCOPE_SUBTREE, filter_string)
    return results

Никогда не используйте простую конкатенацию строк или регулярные выражения для очистки ввода перед добавлением его в LDAP-Фильтр. Всегда полагайтесь на встроенные механизмы экранирования вашей LDAP-библиотеки.

Часто задаваемые вопросы ldap-инъекции

Часто задаваемые вопросы

Чем LDAP-инъекция отличается от SQL-инъекции?

Хотя обе Атаки направлены на внедрение вредоносного кода, они работают с разными базами данных. SQL-инъекция эксплуатирует уязвимости в реляционных базах данных (MySQL, PostgreSQL), используя Синтаксис SQL. LDAP-инъекция нацелена на каталоги, использующие протокол Lightweight Directory Access Protocol, и манипулирует LDAP-фильтрами. Механика внедрения схожа (недостаточная санитизация ввода), но целевая среда и синтаксис атаки различаются.

Можно ли обнаружить LDAP-инъекцию сканерами уязвимостей?

Стандартные сканеры уязвимостей (DAST) могут обнаруживать явные случаи LDAP-инъекции, отправляя тестовые payloads и анализируя ответы сервера. Однако слепые инъекции часто остаются незамеченными, так как не вызывают очевидных ошибок или изменений в выводе. Для надежного выявления требуется ручное тестирование (pentesting) и статический анализ кода (SAST), проверяющий места конкатенации строк в запросах.

Какие инструменты защиты эффективнее всего против этой атаки?

Наиболее эффективным методом является использование параметризованных запросов или методов экранирования, предоставляемых самой LDAP-библиотекой. Дополнительно рекомендуется применять принцип наименьших привилегий для учетных записей, используемых приложением для подключения к каталогу, и внедрять WAF (Web Application Firewall) с правилами, блокирующими подозрительные символы в параметрах запросов.

Влияет ли LDAP-инъекция на производительность сервера?

Да, успешная атака может вызвать значительную нагрузку на LDAP-сервер. Запросы, извлекающие все записи каталога или выполняющие сложные логические операции с большими объемами данных, приводят к высокой нагрузке на процессор и память. Это может быть использовано для организации атаки типа «отказ в обслуживании» (DoS), сделав сервис недоступным для легитимных пользователей.

Итоги

LDAP-инъекция представляет серьезную угрозу безопасности веб-приложений, интегрированных с корпоративными каталогами, позволяя злоумышленникам обходить аутентификацию и получать доступ к конфиденциальным данным.

  • Атака возникает из-за прямой подстановки пользовательского ввода в LDAP-фильтры без санитизации.
  • Основные последствия включают компрометацию учетных записей, утечку персональных данных и нарушение целостности каталога.
  • Виды атак варьируются от простого обхода пароля до сложных слепых инъекций и модификации записей.
  • Защита требует обязательного экранирования спецсимволов и использования безопасных API библиотек.
  • Регулярный аудит кода и пентестинг критически важны для выявления уязвимых мест в интеграциях с Active Directory и OpenLDAP.