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

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

Брутфорс Формы Входа (Нет Rate Limiting)

Форма входа не ограничивает количество попыток, позволяя подобрать пароль администратора перебором по словарю.

Автор: Hack & Fix
Освоишь: bcrypt/argon2constant-time compareMFA
Легко+30 XP ~20 мин python
CWE-287 · A07:2021 Pro
Обложка: Брутфорс Формы Входа (Нет Rate Limiting) Обложка: Брутфорс Формы Входа (Нет Rate Limiting)
Задача
# Брутфорс формы входа: отсутствие ограничения попыток ## Сценарий **GadgetHub** — интернет-магазин гаджетов и аксессуаров на Flask. Служба поддержки заметила в журналах подозрительную активность: сотни попыток входа в чужие учётные записи за минуту. Владелец площадки не верит, что форму входа можно «дожать» автоматизированным перебором, и заказал вам демонстрацию реалистичной атаки: войти под административной учётной записью, не зная пароля заранее. ## Цель 1. Убедитесь, что форма входа не ограничивает частоту неудачных попыток. 2. Подберите пароль администратора по словарю типичных слабых паролей. 3. Войдите как `admin`, оплатите товар «CTF Flag» и получите флаг в профиле. ## Теория Ожидаемая от современного приложения защита от перебора — ограничение частоты попыток: сервер считает неудачные проверки с одного источника за временное окно и после порога начинает отвечать отказом или замедлять реакцию. Здесь ничего этого нет: эндпоинт авторизации обрабатывает каждый запрос так, будто он первый, — ни счётчика неудач, ни блокировки, ни задержки. В сочетании со слабым паролем, который встречается в общедоступных словарях, это позволяет перебирать пароли на полной скорости — тысячи проверок за минуту. Класс проблемы — Identification and Authentication Failures (OWASP A07:2021). **Уязвимый паттерн:** ```python username = request.form.get('username', '') password = request.form.get('password', '') # далее сразу проверка пароля — без учёта предыдущих попыток ``` Неудачная и тысячная подряд неудачная попытки для сервера неотличимы: он честно сверяет каждую пару «логин/пароль» и так же честно отвечает «неверные данные». ## Точка входа атаки `POST /login` — форма входа с полями `username` и `password`. * **Обычный пользователь:** `demo` / `demo` * **Цель:** `admin` (пароль нужно подобрать)

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

другие лабы по этой уязвимости
Обложка лабы: Слабая Парольная Политика Обложка лабы: Слабая Парольная Политика
Auth

Слабая Парольная Политика

Регистрация принимает любой пароль без проверки сложности. Пароль администратора — 'admin'.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: JWT: Weak Secret Обложка лабы: JWT: Weak Secret
Auth

JWT: Weak Secret

JWT подписан слабым секретом — подберите его через brute-force и подделайте токен администратора.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Timing-атака на форму входа Обложка лабы: Timing-атака на форму входа
Auth

Timing-атака на форму входа

Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: JWT: None Algorithm Attack Обложка лабы: JWT: None Algorithm Attack
Auth

JWT: None Algorithm Attack

Сервер принимает JWT с alg:none и доверяет роли из claims — подделайте токен для получения прав администратора.

+60 XP
Python Pro
Exploit Fix