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

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

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

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

Автор: Hack & Fix
Освоишь: bcrypt/argon2constant-time compareMFA
Средне+60 XP ~35 мин python
CWE-287 · A07:2021 Pro
Обложка: Timing-атака на форму входа Обложка: Timing-атака на форму входа
Задача
## Сценарий **VoltParts** — интернет-магазин электронных компонентов с обычной формой авторизации. На любую неудачную попытку сервер отвечает одинаковым сообщением о неверных данных, и со стороны кажется, что перечень учётных записей не разглашается. Инженер по безопасности площадки предположил, что одинаковый текст ещё не означает одинаковую работу сервера, и поручил вам проверить форму входа измерениями: существует ли побочный канал, по которому можно составить список реальных аккаунтов. ## Цель 1. Измерьте поведение формы входа и найдите побочный канал, разглашающий существование пользователей. 2. Перечислите реальные учётные записи среди типичных кандидатов (`admin`, `root`, `support` и другие). 3. Войдите как `admin`, оплатите товар «CTF Flag» и получите флаг в профиле. ## Теория Timing side-channel — утечка информации через время ответа. По тексту ошибки «нет такого пользователя» и «неверный пароль» здесь неразличимы, но по объёму вычислений — различны: в одном случае сервер выполняет дорогую криптографическую операцию сверки пароля по хешу, в другом — не выполняет ничего. **Уязвимый паттерн:** ```python if not row: return render_template('login.html', error='Invalid credentials') # ниже — дорогая сверка пароля по хешу, только если пользователь найден ``` Разница в стоимости работы превращается в разницу времени ответа на десятки миллисекунд. Атакующий отправляет серию запросов с логинами-кандидатами, усредняет время ответа на каждый — и существующие аккаунты устойчиво выделяются на фоне несуществующих. Это user enumeration (CWE-204) без единой подобранной буквы пароля; класс проблемы — Identification and Authentication Failures (OWASP A07:2021). ## Точка входа атаки `POST /login` — форма входа с полями `username` и `password`. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** `admin` / `SuperSecret`

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

другие лабы по этой уязвимости
Обложка лабы: JWT: None Algorithm Attack Обложка лабы: JWT: None Algorithm Attack
Auth

JWT: None Algorithm Attack

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

+60 XP
Python Pro
Exploit Fix
Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting)
Auth

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

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

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Слабая Парольная Политика Обложка лабы: Слабая Парольная Политика
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