WEB / WEB-задачи в CTF

Сжатый конспект по веб-взлому для CTF: что смотреть, где тренироваться и чем пользоваться. Аккуратный набор ссылок + практические заметки.
Информацию собрал: Василий Гришин
Информацию дополнил: Егор Краснов

OWASP Лабы Тулзы Рекомендации

Общее

OWASP-список уязвимостей: owasp.org/www-community/vulnerabilities/
CTF-таски зачастую ложатся на этот перечень (OrenHack 2023 и не только).
  • Cross-site Scripting (XSS) (reflected/stored/dom: гуглим разновидности сами)
    Пример: Внедрение скрипта в поле ввода: <script>alert('XSS')</script>
  • XML External Entity (XXE)
    Пример: Чтение файла через внешнюю сущность: <!ENTITY xxe SYSTEM "file:///etc/passwd">
  • SQL Injection(union based/error based/blind/etc.: гуглим разновидности сами)
    Пример: Обход аутентификации: ' OR '1'='1'--
  • Command Injection
    Пример: Выполнение команды через уязвимый параметр: ; cat /etc/passwd
  • Server-Side Template Injection (SSTI)
    Пример: Внедрение в шаблон Jinja2: {{ 7*7 }} (вернет 49)
  • Server-Side Request Forgery (SSRF)
    Пример: Обращение к внутренним ресурсам: http://localhost/admin
  • Broken Object Level Authorization (BOLA)
    Пример: Доступ к данным другого пользователя через изменение ID: /api/users/123 → /api/users/456
  • Authentication Bypass
    Пример: Обход аутентификации через модификацию cookie: admin=false → admin=true
  • Open Redirect
    Пример: Перенаправление на фишинговый сайт: https://example.com/redirect?url=https://evil.com
  • Path Traversal
    Пример: Чтение системных файлов: ../../../../etc/passwd
  • IDOR (Insecure Direct Object Reference)
    Пример: Прямое обращение к ресурсам: /download?file=report.pdf → /download?file=config.php
  • Local File Inclusion (LFI)
    Пример: Включение локальных файлов: index.php?page=../../etc/passwd

JWT (JSON Web Tokens)

JWT (JSON Web Token) — открытый стандарт (RFC 7519) для создания токенов доступа, которые передают информацию между сторонами в виде JSON-объекта. Токены цифрово подписываются, что обеспечивает их проверку и доверие. Часто используются для аутентификации и авторизации в веб-приложениях и API.

Структура JWT:

  • Header — содержит метаданные (тип токена и алгоритм подписи, например HS256 или RS256).
  • Payload — содержит утверждения (claims) о пользователе (например, идентификатор, роль, время выпуска).
  • Signature — создается путем кодирования header и payload, а затем подписи с использованием секретного ключа или открытого/закрытого ключа.

Распространенные уязвимости JWT в CTF:

  • Атака на алгоритм "none" — удаление подписи и изменение алгоритма на "none" для обхода проверки.
  • Слабый секретный ключ — подбор ключа (brute-force) для подделки подписи (например, с помощью инструмента jwt_tool).
  • Подмена ключа алгоритма — изменение алгоритма с RS256 на HS256 и использование открытого ключа в качестве секретного для подписи.
  • Раскрытие чувствительных данных — JWT кодируется в Base64, но не шифруется по умолчанию, поэтому данные могут быть прочитаны.
  • Отсутствие проверки подписи — некорректная реализация проверки подписи на стороне сервер.

Инструменты для тестирования JWT:

jwt.io

онлайн-отладчик для декодирования и проверки JWT

Online

jwt_tool

Python-скрипт для тестирования уязвимостей JWT

CLI

Burp Suite

расширения для работы с JWT (например, JWT Editor)

GUI
Всегда проверяйте алгоритм подписи и используйте надежные секретные ключи. Избегайте хранения чувствительных данных в payload JWT.

Лабы (PortSwigger)

Сканеры, утилиты, тулзы

Важно: на некоторых CTF сканеры/брутилки запрещены — читай правила и слушай админов.

sqlmap

сканер/эксплуатация SQLi

KaliCLI

beef

управление клиентом через XSS

XSS

gobuster / dirb

поиск директорий/путей

Fuzz

ffuf

брут параметров запросов

Fuzz

curl

швейцарский нож HTTP

CLI

Burp Suite

Proxy/Repeater/Intruder

GUI

wapiti

веб-сканер уязвимостей

Scan

jwt_tool

тестирование уязвимостей JWT

CLI

jwt-cracker

брутфорс секретного ключа JWT

CLI

Рекомендации

  1. Освой Linux (Kali в VM или хотя бы терминал).
  2. Пойми устройство веб-приложения (архитектура, слои).
  3. Разберись с HTTP (методы, заголовки, кеш, куки, CORS).
  4. Полезно знать базово TCP/UDP и сетевую модель.
  5. Можно загуглить Offensive Payloads, Seclist passwords, payloads, directory etc. Тем самым, у вас под рукой всегда есть пейлоады, и списки для брутфорса.
  6. Для JWT: изучите, как работают подписи (HMAC, RSA), и практикуйтесь на лабораториях PortSwigger или HackTheBox.

Misc

Если сильно интересно и знаешь английский — канал LiveOverflow: тонна материала по CTF/вебу/реверсу.