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

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

Access Control: Обход проверки через регистр URL

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

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

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

другие лабы по этой уязвимости
Обложка лабы: Access Control: Горизонтальная эскалация через API Обложка лабы: Access Control: Горизонтальная эскалация через API
Access

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

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

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

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

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

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Horizontal Privilege Escalation: изменение профиля другого пользователя Обложка лабы: Horizontal Privilege Escalation: изменение профиля другого пользователя
Access

Horizontal Privilege Escalation: изменение профиля другого пользователя

Обработчик обновления аватара принимает user_id из формы вместо сессии -- атакующий может изменить профиль любого пользователя, включая администратора.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: URL Case Bypass: обход проверки пути с помощью регистра Обложка лабы: URL Case Bypass: обход проверки пути с помощью регистра
Access

URL Case Bypass: обход проверки пути с помощью регистра

Middleware проверяет путь с учётом регистра (strings.HasPrefix). Замена /admin на /Admin позволяет обойти проверку роли администратора.

+60 XP
Go Pro
Exploit Fix