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)
SQL Injection
Тренажёры + разборы от PortSwigger
XSS
Reflected/Stored/DOM, контексты и пейлоады
XXE
Entity-инъекции, чтение файлов, SSRF-мосты
Command Injection
OS-инъекции в веб-обвязке
Логические уязвимости
Примеры бизнес-логики и обходов
JWT
Уязвимости JSON Web Tokens
Минус — всё на английском. Но это лучшие упражнения и объяснения.
Сканеры, утилиты, тулзы
Важно: на некоторых 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
Рекомендации
- Освой Linux (Kali в VM или хотя бы терминал).
- Пойми устройство веб-приложения (архитектура, слои).
- Разберись с HTTP (методы, заголовки, кеш, куки, CORS).
- Полезно знать базово TCP/UDP и сетевую модель.
- Можно загуглить Offensive Payloads, Seclist passwords, payloads, directory etc. Тем самым, у вас под рукой всегда есть пейлоады, и списки для брутфорса.
- Для JWT: изучите, как работают подписи (HMAC, RSA), и практикуйтесь на лабораториях PortSwigger или HackTheBox.
Misc
Если сильно интересно и знаешь английский — канал LiveOverflow: тонна материала по CTF/вебу/реверсу.