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

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

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

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

Автор: Hack & Fix
Освоишь: RBACpolicy testsdeny-by-default
Средне+60 XP ~30 мин golang
CWE-284 · A01:2021 Pro
Обложка: URL Case Bypass: обход проверки пути с помощью регистра Обложка: URL Case Bypass: обход проверки пути с помощью регистра
Задача
# URL Path Bypass: обход проверки доступа сменой регистра пути ## Сценарий Вы — покупатель магазина электроники **КиберБазар**. Админ-зона закрыта middleware: для путей, начинающихся с `/admin`, обычный пользователь получает отказ. Проверку написали «в лоб» — как строковое сравнение, — и команда уверена, что она держит удар. Внутренний аудит, разбирая реестр маршрутов, заметил подозрительную деталь: один и тот же обработчик доступен по двум записям пути, различающимся только регистром. А среди защищённых эндпоинтов есть JSON-эндпоинт с данными всех пользователей и секретом системы. ## Цель 1. Убедитесь, что прямой запрос к защищённому эндпоинту из-под обычной учётной записи заканчивается отказом. 2. Разберитесь, как именно middleware отличает «admin-путь» от остальных: какое сравнение применяется к строке пути и нормализуется ли она перед этим. 3. Найдите альтернативную запись того же пути — семантически ту же страницу, но строково другую — и извлеките флаг из JSON-ответа. ## Теория Авторизация по URL обязана работать с канонической формой пути: сначала путь нормализуется (единый регистр, без лишних слэшей и сегментов), и только затем сравнивается. Прямое сравнение «как есть» создаёт лазейку: один и тот же ресурс в HTTP нередко достижим по нескольким строковым записям, и часть из них строковой проверке не соответствует. **Уязвимый паттерн:** ```go // путь сравнивается как есть — сравнение чувствительно к регистру if strings.HasPrefix(r.URL.Path, "/admin") && user.Role != "admin" { http.Error(w, "Access Denied", 403); return } ``` Механика атаки: проверка ожидает префикс строго в нижнем регистре. Если маршрут зарегистрирован ещё и в другом написании, запрос по этому написанию не совпадает с префиксом — middleware пропускает его без проверки роли, а обработчик отрабатывает как для обычной страницы. ## Точка входа атаки `GET /admin/data` — JSON-эндпоинт админ-панели: список пользователей и сервисные данные; доступ закрыт middleware проверки роли. * Обычный пользователь: `demo` / `demo`

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

другие лабы по этой уязвимости
Обложка лабы: Horizontal Privilege Escalation: изменение профиля другого пользователя Обложка лабы: Horizontal Privilege Escalation: изменение профиля другого пользователя
Access

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

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

+60 XP
Go Pro
Exploit Fix
Обложка лабы: Referer Bypass: обход контроля доступа через подмену заголовка Обложка лабы: Referer Bypass: обход контроля доступа через подмену заголовка
Access

Referer Bypass: обход контроля доступа через подмену заголовка

API-эндпоинт /api/admin/users проверяет заголовок Referer вместо роли пользователя. Атакующий может подделать заголовок и получить доступ к данным администратора.

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

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

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

+30 XP
Go 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