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

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

API Rate Limit: Brute-force логина без ограничений

Отсутствие rate limiting на эндпоинте логина позволяет brute-force пароля администратора.

Автор: Hack & Fix
Освоишь: scope-based authrate limitpagination guard
Средне+60 XP ~35 мин golang
CWE-284 · A01:2021 Pro
Обложка: API Rate Limit: Brute-force логина без ограничений Обложка: API Rate Limit: Brute-force логина без ограничений
Задача
# API: перебор пароля через отсутствие rate limiting ## Сценарий Вы аудируете JSON API интернет-магазина **ЛавкаКода**. Вход в API — POST-эндпоинт аутентификации: логин и пароль, при успехе — сессия. Команда спокойна: пароли хешированы, неверные попытки возвращают отказ, а пароль администратора «знают только внутри сети». Внутренний аудит уверен в обратном: служебная метка системы отдаётся admin-API, и до неё реально добраться, не зная пароля заранее. ## Цель 1. Изучите поведение эндпоинта аутентификации при серии неверных попыток: есть ли задержка, лимит частоты, блокировка учётной записи, CAPTCHA. 2. Получите admin-сессию, не зная пароля заранее, — используя лишь то, что эндпоинт не ограничивает многократные запросы. 3. С этой сессией обратитесь к admin-API и извлеките флаг. ## Теория Rate limiting — обязательный контроль безопасности для эндпоинтов аутентификации. Без него скорость перебора паролей ограничена только пропускной способностью сети: словари известных скомпрометированных паролей содержат миллиарды записей, а топ-100 самых употребимых паролей закрывает значимую долю реальных аккаунтов. Пароль администратора, выбранный «для удобства», почти всегда оказывается в таком топе. **Уязвимый паттерн (отсутствие защиты):** ```go // маршрут входа обрабатывает любое число запросов без ограничений mux.Handle("POST /api/login", http.HandlerFunc(h.APILogin)) // нет лимита частоты, нет блокировки, нет задержки ``` Механика атаки: она не требует обходов и спецсимволов — только обычные запросы аутентификации, повторённые много раз. Каждый ответ честно сообщает «успех» или «неверный пароль», и по этому различию скрипт перебирает словарь за секунды. После успеха атакующий получает полноценную сессию с правами администратора. ## Точка входа атаки `POST /api/login` — API-эндпоинт входа (поля `username`, `password`); `GET /api/admin/flag` — служебный эндпоинт, требующий admin-сессию. * Целевая учётная запись: `admin` / ??? — пароль предстоит подобрать

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

другие лабы по этой уязвимости
Обложка лабы: API BOLA: Доступ к чужим заказам Обложка лабы: API BOLA: Доступ к чужим заказам
API

API BOLA: Доступ к чужим заказам

Broken Object Level Authorization (BOLA): API возвращает заказы любого пользователя по ID без проверки владельца.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: API Mass Assignment: Повышение привилегий через PUT Обложка лабы: API Mass Assignment: Повышение привилегий через PUT
API

API Mass Assignment: Повышение привилегий через PUT

encoding/json декодирует PUT-запрос в map[string]interface{}, а self-service switch ошибочно разрешает role наряду с fullname и avatar_url.

+60 XP
Go Pro
Exploit Fix