Skip to content

Latest commit

 

History

History

injection

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Injection?

Автор: Leofwin (Чуприлин Андрей)

История

Наши специалисты написали SUPER-MEGA-ЖЕСТЬКАКОЙ-защищенный сервис. В нем можно получить информацию о сотрудниках корпорации. Мы, путем сложного перебора, достали один из аккаунтов: test:test. Сможете добыть телефон админа сервиса?

Не забудьте обернуть в Cup{...}

Деплой

Сервис находится в папке service и обернут в докер.

Внутри докера сервис работает на порту 5000.

Описание сервиса

Сервис на входе предлагает пройти авторизацию. Успешно авторизовавшись, можно увидеть карточку с информацией о пользователе. Однако, некоторую информацию мы по-прежнему не можем увидеть (например, телефон пользователя).

Решение задания

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

Существует некоторое количество payload'ов для LDAP-инъекций, часть из которых можно посмотреть в PayloadAllThings. Использование элементарного %00 в данном случае не проходит - сервис валидирует данный символ.

Попробуем понять как бы выглядел самый простой запрос LDAP с такими параметрами:

(&
    (login=$login)
    (password=$pass)
)

И при этом мы хотим добавить проверку на поле mobile. Будем указывать значения логина и пароля в следующем формате:

login=admin)(|(mobile=*

password=1)

Таким образом, у нас получится следующий запрос к LDAP-серверу:

(&
    (login=`admin)
    (|
        (mobile=*)
        (password=1)
    )
)

Теперь вместо * можно в поле mobile можно начать перебирать значение, пока не получим флаг.

Реализацию данной атаки можно посмотреть в файле sploit.py.

Флаг

Cup{th3r34r3n0t0nlysql1nj3ct10ns}