На странице
Отравление сброса пароля через middleware
Лаборатория
Password reset poisoning via middleware · Practitioner
Решение
Дано
This lab is vulnerable to password reset poisoning. The user `carlos` will carelessly click on any links in emails that he receives. To solve the lab, log in to Carlos's account. You can log in to your own account using the following credentials: `wiener:peter`. Any emails sent to this account can be read via the email client on the exploit server.
Анализ задания
Судя по названию, аналогично предыдущей лабе, только нужно использовать технику использования заголовков X-* для переопределения заголовка Host. В первую очередь обычно проверяют X-Forwarded-Host, а ещё можно:
X-Host
X-Forwarded-Server
X-HTTP-Host-Override
Forwarded
Разведка
Посмотрим функцию сброса пароля.
Отправим запрос на восстановление для своего пользователя.
Попробуем сходу переопределить заголовок Host на адрес нашего эксплойт-сервера.
Никакого ответа, просто Stream closed.
Ок, попробуем X-Forwarded-Host. Добавим к заголовкам:
X-Forwarded-Host: exploit-0a20001104ed604d802011ff017700f1.exploit-server.net
Работает!
Теперь в теле запроса поменяем имя на carlos.
Идём в логи доступа, видим:
/forgot-password?temp-forgot-password-token=j4by8s8k70bbyzg3pj5x6l4d9ymzkl0f
Переходим по ссылке, меняем пароль. Логинимся.
Лаба решена!
Ещё в этой категории
Внедрение произвольного объекта в PHP (PortSwigger Lab)
Восстановление утёкшего исходного кода и внедрение сериализованного объекта CustomTemplate, чей __destruct удаляет произвольный файл.
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.