LDAP-инъекция - LDAP injection

В компьютерная безопасность, LDAP-инъекция это внедрение кода техника, используемая для эксплуатации веб-приложения которые могут раскрыть конфиденциальную информацию пользователя или изменить информацию, представленную в LDAP (Lightweight Directory Access Protocol) хранилищ данных.[1][2][3] Инъекция LDAP использует уязвимость системы безопасности в приложении, манипулируя входными параметрами, передаваемыми во внутренний поиск, добавляя или изменяя функции. Когда приложению не удается должным образом очистить ввод пользователя, злоумышленник может изменить оператор LDAP.

Техническая реализация

Внедрение LDAP происходит, когда вводимые пользователем данные не обрабатываются должным образом, а затем используются как часть динамически сгенерированного фильтра LDAP. Это приводит к потенциальным манипуляциям с операторами LDAP, выполняемыми на сервере LDAP, для просмотра, изменения или обхода учетных данных аутентификации.[1]

Профилактика

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

Пример

В приведенном ниже примере создается запрос для проверки учетных данных пользователя с целью входа в систему.

Строковый фильтр = «(& (ПОЛЬЗОВАТЕЛЬ =» + имя_пользователя + «) (ПАРОЛЬ =« + пароль_пользователя + »))»;

В типичном случае использования пользователь должен предоставить свои учетные данные, и этот фильтр будет использоваться для проверки этих учетных данных. Однако злоумышленник может ввести специально созданный ввод для переменной имя пользователя Такие как Джон Доу)(&) и любое значение пароля законченный запрос станет (& (ПОЛЬЗОВАТЕЛЬ = johnDoe) (&)) (ПАРОЛЬ = пройти)). Сервер LDAP обрабатывает только первую часть этого запроса. (& (ПОЛЬЗОВАТЕЛЬ = johnDoe) (&), который всегда принимает значение true, позволяя злоумышленнику получить доступ к системе без необходимости предоставлять действительные учетные данные пользователя.

Смотрите также

Рекомендации

  1. ^ а б Алонсо, Дж. М .; Bordon, R .; Beltran, M .; Гусман, А. (1 ноября 2008 г.). «Методы внедрения LDAP». 2008 11-я Сингапурская международная конференция IEEE по системам связи: 980–986. Дои:10.1109 / ICCS.2008.4737330. ISBN  978-1-4244-2423-8.
  2. ^ а б «Консорциум безопасности веб-приложений / внедрение LDAP». projects.webappsec.org. Получено 9 декабря 2016.
  3. ^ Варанаси, Баладжи (26 ноября 2013 г.). Практический Spring LDAP: разработка Enterprise Java LDAP стала проще. Апресс. п. 97. ISBN  978-1-4302-6398-2. Получено 9 декабря 2016.