Источник: https://github.com/AnaktaCTF/CTF/blob/main — WEB/Authentication vulnerabilities.md
Аутентификация — ключевой механизм безопасности, обеспечивающий доступ к информации и функциям только авторизованным пользователям. Ошибки в реализации этой системы нередко становятся причиной критических уязвимостей.
🔐 Что такое аутентификация?
Аутентификация — это процесс проверки подлинности пользователя или клиента. Существует три основных типа факторов аутентификации:
- Знание: что-то, что пользователь знает (например, пароль).
- Владение: что-то, чем пользователь владеет (например, телефон, токен).
- Присущие характеристики: биометрия, поведенческие особенности.
❓ Как возникают уязвимости аутентификации?
Уязвимости в механизмах аутентификации обычно возникают по двум причинам:
-
Слабые механизмы защиты
Например: отсутствие ограничения числа попыток входа, неиспользование MFA, уязвимые схемы токенов. -
Ошибки в логике или реализации
Например: можно обойти аутентификацию с помощью подделки запроса, изменить метод HTTP, получить доступ к защищённым ресурсам напрямую.
📌 Такие уязвимости позволяют злоумышленникам получить доступ к чужим аккаунтам или административной панели.
⚠️ Типовые уязвимости и как их найти
1. 🔁 Brute-force и Credential Stuffing
Суть: перебор паролей или логинов.
🔍 Как искать:
- Повторно отправлять логин/пароль через Burp Intruder
- Проверять, меняется ли ответ сервера (длина, код, сообщение)
- Проверять ограничения по числу попыток
🛠 Инструменты:
- Burp Suite Intruder (Payloads: словари, генераторы)
- Hydra / Medusa (для SSH, FTP, Web)
- CeWL, seclists, rockyou.txt
🧨 Как эксплуатировать:
POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=admin\&password=123456
— если сервер не блокирует, перебор можно масштабировать.

2. 🔀 Уязвимости управления сессиями
Суть: можно угадать или повторно использовать session ID.
🔍 Как искать:
- Авторизоваться, скопировать session ID → перелогиниться: должен быть новый ID
- Проверять длину и структуру куки: PHPSESSID=abc123 — плохой признак
- Использовать уязвимость XSS для кражи куки
🧨 Как эксплуатировать:
- Если session фиксирован (не обновляется), украденная кука даёт полный доступ
- XSS →
document.cookie→ отправка на сервер злоумышленника
3. 🛑 Account Lockout / DoS на пользователей
Суть: блокировка аккаунта после нескольких неверных входов.
🔍 Как искать:
- Попробовать 3–5 неверных входов для одного логина
- Сравнить HTTP-ответ после N попыток
🧨 Как эксплуатировать:
- DoS на известных пользователей (admin, hr, ceo): автоматическая блокировка их входа
- Особенно опасно при отсутствии CAPTCHA или антибот-защиты
4. 🧪 Байпас аутентификации
Суть: доступ к защищённым страницам без авторизации.
🔍 Как искать:
- Доступ к
/adminбез токена / сессии - Изменение метода запроса (GET ↔ POST)
- Использование path traversal:
/../admin,%2e%2e/
🧨 Как эксплуатировать:
GET /admin%2e%2e/dashboard HTTP/1.1
или
GET /login HTTP/1.1
X-Original-URL: /admin
🛠 Полезно:
- Burp Repeater для манипуляций путями и заголовками
- ffuf, dirsearch, gobuster — нащупать скрытые/недокументированные пути

5. 📤 User Enumeration
Суть: сервер "выдаёт" информацию о существующих логинах.
🔍 Как искать:
- Ввод несуществующего логина → другой ответ (по содержимому или коду)
- Email-форма восстановления → разные ответы
🧨 Как эксплуатировать:
- Словарь логинов: admin, user, test, bob...
- Использовать Burp Intruder: добавить список логинов, сравнить длину ответа
6. 🔒 MFA обход
Суть: MFA реализована, но обходится.
🔍 Как искать:
- Пропуск второго этапа через прямой POST
- Изменение параметров запроса (например, токена или пути)
- Проверка логики: можно ли получить токен без верификации?
🧨 Как эксплуатировать:
- MFA только визуально отделена, но backend не проверяет факт прохождения
- Replay-код (если OTP фиксирован) или захват токена по MITM

7. 🔑 JWT уязвимости
Суть: манипуляция токеном доступа.
🔍 Как искать:
- Посмотреть alg в JWT: none или HS256
- Сменить alg на none и удалить подпись
- Попробовать подобрать секрет к HS256 (через словарь)
🧨 Как эксплуатировать:
- Подмена payload: роль user → admin
{
"alg": "none",
"typ": "JWT"
}.
{
"user": "admin"
}.
🛠 Инструменты:
- jwt.io
- jwt_tool.py
- Burp Decoder / Repeater
8. 🌐 Уязвимости OAuth/OpenID
Суть: злоумышленник перехватывает авторизацию или подменяет URI.
🔍 Как искать:
- Непроверенный
redirect_uri(можно указать свой сайт) - Отсутствие параметра
stateили проверок CSRF - URL манипуляции в потоке авторизации
🧨 Как эксплуатировать:
https://auth.example.com/authorize?client_id=X\&redirect_uri=https://attacker.com\&response_type=code
- Replay или фальсификация access_token
📚 Полезные ресурсы
- PortSwigger Academy – Authentication
- Инструменты:
Burp Suite | jwt_tool | hydra | ffuf | wfuzz | cewl | seclists | gobuster | dirsearch
