Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Чужие Статьи (https://forum.antichat.xyz/forumdisplay.php?f=32)
-   -   [Перевод] Инъекции в Ldap (https://forum.antichat.xyz/showthread.php?t=53249)

NeMiNeM 10.11.2007 00:53

[Перевод] Инъекции в Ldap
 
Инъекции в LDAP


Автор: ka0x
Контакты: ka0x01[!]gmail.com
D.O.M TEAM 2007

Перевод: NeMiNeM
antichat.ru

- Вступление
- Фильтры LDAP
- Инъекции в LDAP в сетевых-приложениях
- Ссылки



[Вступление]

Техника LDAP (Lightweight Directory Access Protocol или Облегченный (упрощенный) протокол доступа к [сетевым] каталогам) представляет собой упрощенную версию ориентированного на соединение протокола DAP из набора стандартов X.500. Этот протокол работает через TCP/IP. Протокол доступа LDAP используется для запросов и модификации объектов.

[Фильтры LDAP]

Достаточно важно понять как работают фильтры в LDAP:

FC 4515 (6/2006) (http://tools.ietf.org/html/rfc4515)

Filter = ( filtercomp )
Filtercomp = and / or / not / item
And = & filterlist
Or = | filterlist
Not = ! filter
Filterlist = 1*filter
Item = simple / present / substring
Simple = attr filtertype assertionvalue
Filtertype = "=" /"~="/ ">=" / "<="
Present = attr = *
Substring = attr "=" [initial] * [final]
Initial = assertionvalue
Final = assertionvalue

Логические операторы:

- AND "&"
- OR "|"
- NOT "!"

Реляционные операторы:

<=, >=, =, ~=

Специальный символ "*" используется для замены символов.

Пример фильтра:

(&(objectClass=user)(uid=*)):

Возвращает список всех объектов класса user, в независимости от значения атрибута "uid".

[Инъекции в LDAP в сетевых-приложениях]


Инъекции в LDAP очень похожи на SQL инъекции. Атака на сервер производится с помощью команд пользователя.

Пример уязвимого кода с комментариями Sacha Faust.

Код HTML:

line 0: <html>
line 1: <body>
line 2: <%@ Language=VBScript %>
line 3: <%
line 4:    Dim userName
line 5:    Dim filter
line 6:    Dim ldapObj
line 7:
line 8:    Const LDAP_SERVER = "ldap.example"
line 9:
line 10:    userName = Request.QueryString("user")
line 11:
line 12:    if( userName = "" ) then
line 13:        Response.Write("<b>Invalid request. Please specify a valid user name</b><br>")
line 14:        Response.End()
line 15:    end if
line 16:
line 17:
line 18:    filter = "(uid=" + CStr(userName) + ")"        ' searching for the user entry
line 19:
line 20:
line 21:    'Creating the LDAP object and setting the base dn
line 22:    Set ldapObj = Server.CreateObject("IPWorksASP.LDAP")
line 23:    ldapObj.ServerName = LDAP_SERVER
line 24:    ldapObj.DN = "ou=people,dc=spilab,dc=com"
line 25:
line 26:    'Setting the search filter
line 27:    ldapObj.SearchFilter = filter
line 28:
line 29:    ldapObj.Search
line 30:
line 31:    'Showing the user information
line 32:    While ldapObj.NextResult = 1
line 33:        Response.Write("<p>")
line 34:
line 35:        Response.Write("<b><u>User information for : " + ldapObj.AttrValue(0) + "</u></b><br>")
line 36:        For i = 0 To ldapObj.AttrCount -1
line 37:            Response.Write("<b>" + ldapObj.AttrType(i) + "</b> : " + ldapObj.AttrValue(i) + "<br>" )
line 38:        Next
line 39:        Response.Write("</p>")
line 40:    Wend
line 41: %>

line 42: </body>
line 43: </html>

Обратите внимание, в 10 строке переменная userName инициализируется с значением параметра user и сразу проверяется на валидность. Если значение не 0, то переменная userName переходит к фильтру в строке 18. Эта новая переменная используется для создания поиска LDAP и последственного вызова SearchFilter в строке 27.

Взломщик имеет полный контроль над действиями такого сервера.
Вы получите результат, когда исполнение кода достигнет строк 32-40.


Пример 1:
http://website/ldap.asp?user=*

В этом примере символ "*" - это параметр для значения "user", которое заканчивается в фильтре переменной.

Эта команда в LDAP покажет вам любой объект, который имеет атрибут uid.

Мы увидим на екране всех пользователей и информацию о них.

Пример 2:

http://website/ldap.asp?user=ka0x)(|(homedirectory=*)

Это покажет нам путь к пользователю ka0x. Перед уходом, можно поэксперементировать с кодом.

[Ссылки]


На оригинал - http://www.milw0rm.com/papers/183

http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
http://es.wikipedia.org/wiki/LDAP
http://www.ldapman.org/

Для antichat.ru

ps: В статье/переводе возможны ошибки. Просьба не кричать, а спокойно указать и исправить. Спасибо.


Время: 15:03