На странице
Обход method-based access control
Лаборатория
Method-based access control can be circumvented · Apprentice
Решение
Дано
This lab implements access controls based partly on the HTTP method of requests. 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.
Анализ задания
Нам нужно ознакомиться, как работает админка, найти там уязвимость, которая поможет обычному пользователю поднять свои права до административных.
Разведка
Залогинимся и посмотрим, как работает админка. Видим ссылку «Admin panel». Тут есть селектор выбора пользователя и 2 кнопки — по сути означают «Сделать админом» и «Убрать из админов». Попробуем сделать админом пользователя wiener и уберём его из админов.
Запрос:
POST /admin-roles
username=wiener&action=upgrade
И вариант с action=downgrade.
Попробуем зайти под пользователем wiener и выполнить этот запрос на повышение прав — «Unauthorized».
Пробуем поменять POST на GET — «Missing parameter 'username'». О, передадим параметр в URL тогда:
GET /admin-roles?username=wiener&action=upgrade
Прошло! Лаба решена.
Ещё в этой категории
Внедрение произвольного объекта в PHP (PortSwigger Lab)
Восстановление утёкшего исходного кода и внедрение сериализованного объекта CustomTemplate, чей __destruct удаляет произвольный файл.
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.