На странице
Незащищённая админка с непредсказуемым URL
Лаборатория
Unprotected admin functionality with unpredictable URL · Apprentice
Решение
Дано
This lab has an unprotected admin panel. It's located at an unpredictable location, but the location is disclosed somewhere in the application.
Solve the lab by accessing the admin panel, and using it to delete the user carlos.
Анализ задания
Есть открытая админка по рандомному URL. Нужно найти адрес, войти и удалить пользователя. Сделаем разведку. Будем обращать внимание на JS-файлы и код — где-то должна быть логика отображения ссылок для админа. Возможно, где-то на странице товара — предположение.
Разведка
Походил по сайту: посмотрел товар, return to list, My account. Смотрим историю запросов в Burp. Явных загрузок JS-файлов не видно.
Посмотрим HTML GET /product?productId=2 — вижу интересный кусок кода:
<script>
var isAdmin = false;
if (isAdmin) {
var topLinksTag = document.getElementsByClassName("top-links")[0];
var adminPanelTag = document.createElement('a');
adminPanelTag.setAttribute('href', '/admin-q4va6y');
adminPanelTag.innerText = 'Admin panel';
topLinksTag.append(adminPanelTag);
var pTag = document.createElement('p');
pTag.innerText = '|';
topLinksTag.appendChild(pTag);
}
</script>
Нашли адрес админки — /admin-q4va6y.
Идём в админку, удаляем пользователя. Лаба решена!
Ещё в этой категории
Внедрение произвольного объекта в PHP (PortSwigger Lab)
Восстановление утёкшего исходного кода и внедрение сериализованного объекта CustomTemplate, чей __destruct удаляет произвольный файл.
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.