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

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

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

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

Автор: Hack & Fix
Освоишь: RBACpolicy testsdeny-by-default
Легко+30 XP ~15 мин golang
CWE-284 · A01:2021 Pro
Обложка: Forced Browsing: доступ к скрытому эндпоинту экспорта Обложка: Forced Browsing: доступ к скрытому эндпоинту экспорта
Задача
# Forced Browsing: незащищённый административный эндпоинт ## Сценарий Вы — зарегистрированный пользователь **SupplyLine** — B2B-портала оптовых закупок на Go. Админ-панель надёжно закрыта проверкой роли, и команда уверена, что все административные маршруты защищены одинаково: функции добавлялись постепенно, несколькими релизами. Аудитору заказчика это не нравится: при таком росте легко где-то забыть проверку. Проверьте все административные маршруты, а не только панель. ## Цель 1. Составьте список административных маршрутов приложения и сравните проверки доступа, применённые к каждому. 2. Найдите маршрут, защищённый слабее остальных, — типичная ошибка при постепенном добавлении функций. 3. Обратившись к нему с обычной учётной записи, получите выгрузку конфиденциальных данных и извлеките из неё флаг. ## Теория **Forced Browsing** (прямое обращение, CWE-425) — получение доступа к закрытой функциональности прямым запросом, минуя навигацию интерфейса. Уязвимость возникает, когда защита существует лишь на уровне интерфейса (обычному пользователю не показывается ссылка) или на части маршрутов, но не на всех. Именно так происходили известные инциденты в реальных продуктах: один забытый при регистрации маршрут открывал административные функции любому вошедшему. **Уязвимый паттерн:** ```go // Панель и удаление защищены проверкой роли, экспорт — только проверкой сессии: mux.Handle("GET /admin", h.AdminMiddleware(http.HandlerFunc(h.AdminPanel))) mux.HandleFunc("GET /admin/export", h.AuthMiddleware(h.AdminExport)) ``` Каждая регистрация маршрута сама выбирает, какую проверку навесить, — и там, где разработчик ошибся, проверяется лишь наличие сессии, а не роль. Отсутствие ссылки в интерфейсе создаёт иллюзию защищённости, но «невидимость» — не контроль доступа: атакующему с валидной учётной записью достаточно обратиться к адресу напрямую. Правильная архитектура — единая граница для целой группы маршрутов, а не отдельная обёртка для каждой регистрации. ## Точка входа атаки * `GET /admin` — админ-панель; корректно требует роль администратора (сравните её отказ с поведением цели). * Цель — административный маршрут с ослабленной проверкой: прямой запрос с обычной сессией. * **Обычный пользователь:** `demo` / `demo`

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

другие лабы по этой уязвимости
Обложка лабы: 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
Обложка лабы: Referer Bypass: обход контроля доступа через подмену заголовка Обложка лабы: Referer Bypass: обход контроля доступа через подмену заголовка
Access

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

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

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

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

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

+30 XP
Node.js Pro
Exploit Fix