Перейти к содержимому
← Каталог golang Auth Bypass

Слабые Пароли (Нет Валидации Сложности)

Форма регистрации принимает любые пароли, включая однозначные. Аккаунт admin защищён паролем 'admin'.

easygolangPro
Задача
# Auth: слабые пароли (отсутствие политики сложности) ## Сценарий Вы аудируете интернет-магазин **SecureShop**. У приложения есть форма регистрации `/register`, открытая для любого пользователя. Команда уверена, что подсистема аутентификации безопасна — пароли хешируются bcrypt с разумной стоимостью, в БД хранятся только хеши. По данным внутреннего аудита, в админ-панели хранится конфиденциальная метка, доступная только пользователю с привилегиями admin; её требуется получить. ## Цель 1. Изучите, какие требования к паролю предъявляет форма регистрации: есть ли валидация длины, состава символов, проверка по deny-list. 2. Определите, есть ли в системе учётные записи со слабыми паролями, либо самостоятельно зарегистрируйте такую (для подтверждения класса уязвимости). 3. Получите admin-сессию через атаку по словарю и извлеките флаг из админ-панели. ## Теория Политика сложности паролей — базовый контроль безопасности на стороне приложения. Без неё пользователи (включая администраторов) свободно выбирают «удобные» пароли: имя сервиса, имя учётки, простые числовые последовательности, ключевые слова из топ-100 распространённых паролей. Хеширование bcrypt замедляет offline-перебор хешей, но **не помогает** против online-перебора через login-эндпоинт: словарная атака на форму логина с топ-словарём отрабатывает за секунды независимо от стоимости bcrypt. **Уязвимый паттерн (отсутствие проверки):** ```go // Регистрация принимает любой непустой пароль — нет требований к длине/составу if password == "" { http.Error(w, "Password is required", 400); return } hash, _ := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) db.Exec("INSERT INTO users (..., password) VALUES (...)", ..., hash) ``` Атака на admin-аккаунт со слабым паролем — комбинация: (1) знание имени admin-учётки (часто `admin`, `administrator`, или раскрывается через публичные эндпоинты), (2) короткий словарь распространённых паролей (`rockyou top-1000`, явные кандидаты типа `admin`/`password`/`123456`). При отсутствии rate-limiting (часто соседствует с этой уязвимостью) перебор занимает секунды. ## Точка входа атаки | Параметр | Значение | |----------|----------| | Эндпоинт логина | `POST /login` | | Цель | `admin` (имя из публичных конвенций) | | Эндпоинт регистрации (для разведки/демонстрации) | `POST /register` | | Привилегированный эндпоинт | `GET /admin` (флаг отображается в Admin Panel) | | Учётные данные обычного пользователя | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru