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

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

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

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

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

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

другие лабы по этой уязвимости
Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting)
Auth

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

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

+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