На странице
Контроль доступа на основе Referer
Лаборатория
Referer-based access control · Apprentice
Решение
Дано
This lab controls access to certain admin functionality based on the Referer header. You can familiarize yourself with the admin panel by logging in using the credentials administrator:admin.
To solve the lab, log in using the credentials wiener:peter and exploit the flawed access controls to promote yourself to become an administrator.
Анализ задания
Есть админка, в ней есть функция повышения прав, которая использует заголовок Referer в качестве данных для управления доступом. Нам дали креды для входа в админку, изучим, как работает функция повышения прав. Для решения нужно повысить пользователю wiener права до административных.
Разведка
Идём смотреть админку. Знакомая форма повышения прав.
После нажатия кнопки повышения прав — запрос:
GET /admin-roles?username=carlos&action=upgrade
Referer: https://0a2b00b703d010d680d8fd69008300f7.web-security-academy.net/admin
Окей, зайдём теперь wiener и попробуем выполнить этот запрос, только заменив session от пользователя wiener. Запрос GET /admin-roles?username=wiener&action=upgrade, Referer берём как в случае запроса админа.
Лаба решена.
Ещё в этой категории
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.
Изменение сериализованных объектов (PortSwigger Lab)
Меняем булево поле `admin` в PHP-сериализованной куке сессии и получаем права администратора.