В лабе используется генерация токенов с использование временных меток для сброса пароля. Для решения необходимо:

  1. Найти уязвимость;
  2. Подобрать правильный токен для сброса пароля пользователя carlos;
  3. Войти в его учетную запись;
  4. Войти в панель администратора и удалить пользователя carlos;

Для входа в учетную запись можно использовать креды wiener:peter.

https://0a5f00c30403881e802ef3cd006f00e3.web-security-academy.net/

Solution

Зайду в личный кабинет. Нашел тут форму сброса пароля, но это меня ни к чему не приблизило. Попробую изменить пароль от аккаунта:

POST /forgot-password HTTP/2
Host: 0a5f00c30403881e802ef3cd006f00e3.web-security-academy.net
Cookie: phpsessionid=DIpD5aGkTIZQYw0xrsmlM8vFFsiHR9lq
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://0a5f00c30403881e802ef3cd006f00e3.web-security-academy.net/forgot-password
Content-Type: application/x-www-form-urlencoded
Content-Length: 53
Origin: https://0a5f00c30403881e802ef3cd006f00e3.web-security-academy.net
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers

csrf=FfroP7uyIK7VPlXRBakNp5RFNT9cjvPn&username=wiener

Меня отправило на почту, чтобы перейти по ссылке для сброса пароля:

https://0a5f00c30403881e802ef3cd006f00e3.web-security-academy.net/forgot-password?user=wiener&token=7154e804bbaab37083e3bb440ea7395a0e8f6466

Сделаю это еще пару раз:

IMG

Токен каждый раз разный и имеет фиксированную длину. Вероятно, это хеш от временной метки. Попробую параллельно отправлять запрос на сброс пароля для пользователя wiener и carlos. С первого раза не вышло… С пятого тоже) Посмотрев на время ответа, я увидел разницу в обработке. Возможно, пакеты обрабатываются последовательно. Поробую изменить или убрать значение сессии. Для этого просто удалю значение Cookies и отправлю новый запрос.

IMG

IMG

Теперь нужна лишь удача и терпение. Если все сработает, то токен для сброса пароля у пользователей wiener и carlos будет совпадать. Тогда можно будет изменить значение GET-параметра user на carlos в ссылке сброса пароля с почты. Да прибудет со мной сила:

https://0a5f00c30403881e802ef3cd006f00e3.web-security-academy.net/forgot-password?user=wiener&token=e05892ec1f8263cfde10458efbcc9bcb23ba1561

Спустя пару попыток у меня получилось:

IMG

Удалю пользователя:

IMG

P.S:

Есть более надежный способ, чем тестить ссылку каждый раз. Если добавить 2 запроса для сброса пароля в своем аккаунте, то на почту должно прилететь 2 одинаковые ссылки, а значит, для другого пользователя должна совпадать с этими:

IMG

Та да)