Эта статья посвящена одной из моих недавних находок — повышение привилегий через сброс пароля, которая является простой и в то же время серьезной уязвимостью.
Еще по теме: IDOR уязвимость на практике
В дальнейшем я буду уязвимый сайт, как redacted.com.
Статья предназначена для образовательных целей и написана для обучение багхантеров. При участии в программе Bug Bounty необходимо действовать этично и соблюдать установленные правила. Несанкционированный взлом сайтов является незаконным и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Повышение привилегий через сброс пароля
В ходе пентеста я обнаружил функцию сброса пароля, которая передавала параметр userId в открытом виде в API бэкенда. Я проверил валидацию, изменив значение параметра во всем приложении, и нашел уязвимость IDOR.
IDOR расшифровывается как Insecure Direct Object Reference (небезопасная прямая ссылка на объект). Это один из распространенных типов уязвимостей веб-приложений.
Суть IDOR заключается в том, что пользователь может получить доступ к объектам или данным, на которые у него нет соответствующих прав доступа, используя прямую ссылку или идентификатор объекта.
Например, в приложении есть функция просмотра чужого профиля по идентификатору /profile?id=123. Злоумышленник может угадать чужой идентификатор.
Во время сброса пароля в приложении отсутствовала проверка текущего пароля пользователя. Это позволяло легко получить доступ к учетным записям других пользователей.
Смена userId без старого пароля приводила к ответу 200 OK и запрашивала вход в систему с новым паролем.
Я попытался войти в систему под привилегированной учетной записью, и таким образом стал администратором.
1 2 3 4 5 6 7 8 |
{ "userId":24, "email":"admin@redacted.com ", "username":"username", "token":"admin_token”, "message":"User login successful!", "status":200 } |
Защита от IDOR
- Проверять права доступа пользователя к запрашиваемому объекту
- Использовать случайные, трудноугадываемые идентификаторы
- Ограничивать доступ к API функциям удаления/изменения объектов
- Вводить дополнительные меры аутентификации для критичных операций
IDOR позволяет выйти за рамки своих прав доступа в приложении, поэтому важно выявлять и устранять такие уязвимости.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Подмена заголовка Origin в конечной точке API
- Пример NoSQL инъекции в конечной точке API
- Пример эксплуатации уязвимости IDOR в Web API