Перейти к содержимому

Поиск по платформе

Access Control: обход URL-проверки через вариации пути

Middleware проверяет доступ к /admin по точному совпадению префикса. Обойдите проверку, изменив регистр символов.

Автор: Hack & Fix
Освоишь: RBACpolicy testsdeny-by-default
Легко+30 XP ~15 мин nodejs
CWE-284 · A01:2021 Pro
Обложка: Access Control: обход URL-проверки через вариации пути Обложка: Access Control: обход URL-проверки через вариации пути
Задача
# Обход контроля доступа через вариации URL ## Сценарий Вы проводите аудит **RedShell** — онлайн-магазина снаряжения для пентестеров, построенного на Express. Команда уверяет, что административный раздел наглухо закрыт middleware-проверкой, но внешний пентест зафиксировал странность: один и тот же дашборд по-разному реагирует на разные написания адреса. Вам поручено разобраться, откуда берётся это расхождение. ## Цель 1. Войдите в приложение под обычным аккаунтом с ролью `user`. 2. Обойдите middleware-проверку и откройте административный дашборд, не обладая ролью `admin`. 3. Извлеките CTF-флаг из раздела служебных данных на открывшейся странице. ## Теория Класс уязвимости — Broken Access Control (OWASP A01:2021). Middleware решает, относится ли запрос к админ-разделу, сравнивая путь запроса с образцом как с обычной строкой: посимвольно и с учётом регистра. Маршрутизатор Express, в свою очередь, подбирает обработчик без учёта регистра. Проверка доступа и маршрутизация живут в разных моделях URL: записи, эквивалентные для роутера, кажутся middleware совершенно иными путями. **Уязвимый паттерн:** ```javascript // Проверка доступа по точному совпадению префикса: if (req.path.startsWith('/admin')) { // ...проверка роли пользователя... } ``` Если записать префикс административного раздела в другом регистре, сравнение строк его не узнает и пропустит запрос дальше, а маршрутизатор всё равно приведёт его к зарегистрированному обработчику. Защита отключается без единого изменения в коде — только сменой записи адреса. ## Точка входа атаки `GET /admin/dashboard` — административный дашборд, цель обхода. Вход в приложение — `POST /login` с полями `username` и `password`. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** `admin` / пароль неизвестен

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: Access Control: Forced Browsing — скрытая админ-панель Обложка лабы: Access Control: Forced Browsing — скрытая админ-панель
Access

Access Control: Forced Browsing — скрытая админ-панель

Административные страницы доступны без аутентификации. Перейдите напрямую и получите конфиденциальные данные.

+30 XP
Node.js Pro
Exploit Fix
Обложка лабы: Access Control: Горизонтальная эскалация через API в Express Обложка лабы: Access Control: Горизонтальная эскалация через API в Express
Access

Access Control: Горизонтальная эскалация через API в Express

API-эндпоинт /api/users/:user_id/notes не проверяет владельца. Получите заметки администратора.

+60 XP
Node.js Pro
Exploit Fix
Обложка лабы: Forced Browsing: доступ к скрытому эндпоинту экспорта Обложка лабы: Forced Browsing: доступ к скрытому эндпоинту экспорта
Access

Forced Browsing: доступ к скрытому эндпоинту экспорта

Административный эндпоинт /admin/export зарегистрирован без проверки роли — любой авторизованный пользователь может получить CSV-экспорт с конфиденциальными данными.

+30 XP
Go Pro
Exploit Fix
Обложка лабы: Access Control: Forced Browsing — открытая админ-панель Обложка лабы: Access Control: Forced Browsing — открытая админ-панель
Access

Access Control: Forced Browsing — открытая админ-панель

Административные страницы доступны без аутентификации. Перейдите напрямую и получите конфиденциальные данные.

+30 XP
Python Pro
Exploit Fix