Три символа, которые ломают авторизацию: как JWT-атаки решают CTF-задачи
На одном из CTF я потратил 40 минут на веб-задачу — перебирал эндпоинты, пробовал SQLi, ковырял параметры. А решение уместилось в три символа:
JWT — это строка из трёх частей через точку: header.payload.signature. Header говорит серверу, каким алгоритмом проверять подпись. Payload хранит данные о пользователе в открытом виде — никакого шифрования, просто base64url. Signature гарантирует, что никто не подменил содержимое. В теории.
На практике разработчики допускают ошибки в валидации, и вот три атаки, которые чаще всего встречаются в CTF:
🔓 1. alg:none — самая простая и самая недооценённая. Меняем алгоритм в header на
🔑 2. Брутфорс слабого секрета. Алгоритм HS256 использует один симметричный ключ для подписи и проверки. Если разработчик поставил пароль вроде
⚡ 3. Algorithm confusion — уровень посложнее. Сервер ожидает RS256 (асимметричная пара ключей), но атакующий переключает заголовок на HS256 и подписывает токен публичным ключом сервера как HMAC-секретом. Публичный ключ часто доступен — через
Где искать токен в задаче? Четыре места:
• Cookie — самый частый вариант (названия:
• Заголовок
• Тело JSON-ответа после логина
•
Практический алгоритм на CTF: нашёл токен → декодировал header и payload → посмотрел
По классификации OWASP, эти уязвимости попадают сразу под три категории Top 10: Broken Access Control, Cryptographic Failures и Security Misconfiguration. Не только CTF — реальные CVE тоже.
Полный разбор с командами и примерами — в статье на HackerLab.
https://hackerlab.pro/blog/jwt-ataki-ctf-ot-struktury-tokena-do-zahvata-flaga-cherez-alg-none-i-slabyy-sekret
На одном из CTF я потратил 40 минут на веб-задачу — перебирал эндпоинты, пробовал SQLi, ковырял параметры. А решение уместилось в три символа:
none в поле alg JWT-заголовка и пустая подпись. Флаг пришёл мгновенно.JWT — это строка из трёх частей через точку: header.payload.signature. Header говорит серверу, каким алгоритмом проверять подпись. Payload хранит данные о пользователе в открытом виде — никакого шифрования, просто base64url. Signature гарантирует, что никто не подменил содержимое. В теории.
На практике разработчики допускают ошибки в валидации, и вот три атаки, которые чаще всего встречаются в CTF:
🔓 1. alg:none — самая простая и самая недооценённая. Меняем алгоритм в header на
"alg":"none", правим payload (например, "role":"admin"), убираем подпись, оставив финальную точку. Если сервер не проверяет алгоритм строго, он примет токен без подписи вообще. В jwt_tool это одна команда: python3 jwt_tool.py TOKEN -X a.🔑 2. Брутфорс слабого секрета. Алгоритм HS256 использует один симметричный ключ для подписи и проверки. Если разработчик поставил пароль вроде
secret, password123 или qwerty — его можно подобрать за секунды. hashcat с режимом 16500 и словарём rockyou.txt перебирает миллионы вариантов в секунду на GPU. Нашёл ключ — подписываешь любой payload и заходишь как admin.⚡ 3. Algorithm confusion — уровень посложнее. Сервер ожидает RS256 (асимметричная пара ключей), но атакующий переключает заголовок на HS256 и подписывает токен публичным ключом сервера как HMAC-секретом. Публичный ключ часто доступен — через
/jwks.json или в исходниках. Сервер берёт тот же ключ для проверки и... подпись совпадает.Где искать токен в задаче? Четыре места:
• Cookie — самый частый вариант (названия:
jwt, token, session)• Заголовок
Authorization: Bearer ...• Тело JSON-ответа после логина
•
localStorage в DevTools для SPA-приложенийПрактический алгоритм на CTF: нашёл токен → декодировал header и payload → посмотрел
alg → попробовал none → не сработало — запустил брутфорс секрета → проверил algorithm confusion. Три шага, которые закрывают 80% JWT-задач на соревнованиях.По классификации OWASP, эти уязвимости попадают сразу под три категории Top 10: Broken Access Control, Cryptographic Failures и Security Misconfiguration. Не только CTF — реальные CVE тоже.
Полный разбор с командами и примерами — в статье на HackerLab.
https://hackerlab.pro/blog/jwt-ataki-ctf-ot-struktury-tokena-do-zahvata-flaga-cherez-alg-none-i-slabyy-sekret
👍3❤1🔥1
Пустая страница Apache — и четыре минуты до флага
Представьте: вы подключаетесь к тренировочной машине на HackTheBox. Nmap показал единственный открытый порт 80, браузер — пустую страницу. Тупик. Одна команда
Перебор директорий — это первое, что делает пентестер после сетевого скана. Вы знаете, что порт открыт, но структура приложения — тёмный лес. Gobuster берёт словарь с типовыми именами путей, подставляет каждое в URL и анализирует HTTP-ответ. Просто, грубо, эффективно.
🔍 Что реально находят при dirbusting:
•
• Директории
• Панели phpMyAdmin без пароля, Tomcat Manager с дефолтными
• Забытые веб-шеллы вроде
По данным Verizon DBIR 2025, около 26% подтверждённых утечек приходится на атаки на веб-приложения. Немалая часть начинается именно с обнаружения эндпоинтов, которые никто не планировал показывать миру.
⚙️ Gobuster написан на Go, потребляет минимум памяти и работает быстро. В Kali Linux он предустановлен — просто набираете
Лайфхак из практики: если ставите через
Режим
📌 Для тренировки поднимите OWASP Juice Shop в Docker — уязвимое приложение с десятками скрытых эндпоинтов. Идеальный полигон, чтобы прощупать Gobuster без риска что-то сломать.
Нельзя эксплуатировать то, чего не обнаружил. Dirbusting — не опциональный шаг, а фундамент любой веб-атаки. Полный разбор флагов, словарей, фильтрации ответов и практические примеры — в развёрнутом материале.
https://hackerlab.pro/blog/gobuster-perebor-direktoriy-i-poisk-skrytyh-faylov-v-veb-zadachah-ctf
Представьте: вы подключаетесь к тренировочной машине на HackTheBox. Nmap показал единственный открытый порт 80, браузер — пустую страницу. Тупик. Одна команда
gobuster dir со словарём common.txt — и через 35 секунд найден /robots.txt. Внутри — путь к админке. В исходном коде — забытые тестовые креды. Четыре минуты от запуска до флага. Без dirbusting эту машину можно было ковырять часами.Перебор директорий — это первое, что делает пентестер после сетевого скана. Вы знаете, что порт открыт, но структура приложения — тёмный лес. Gobuster берёт словарь с типовыми именами путей, подставляет каждое в URL и анализирует HTTP-ответ. Просто, грубо, эффективно.
🔍 Что реально находят при dirbusting:
•
.env, config.php.bak, db_backup.sql — файлы с учётными данными, которые разработчик забыл убрать• Директории
.git/ и .svn/ — раскрывают исходный код проекта• Панели phpMyAdmin без пароля, Tomcat Manager с дефолтными
tomcat:tomcat• Забытые веб-шеллы вроде
cmd.php — прямой путь к RCEПо данным Verizon DBIR 2025, около 26% подтверждённых утечек приходится на атаки на веб-приложения. Немалая часть начинается именно с обнаружения эндпоинтов, которые никто не планировал показывать миру.
⚙️ Gobuster написан на Go, потребляет минимум памяти и работает быстро. В Kali Linux он предустановлен — просто набираете
gobuster в терминале. Словари SecLists ставятся одной командой: sudo apt install seclists. После установки они лежат в /usr/share/seclists/.Лайфхак из практики: если ставите через
go install, сразу пропишите export PATH=$PATH:$HOME/go/bin в .bashrc. Иначе после перелогина команда «пропадёт», и вы потратите минут пять на выяснение причин.Режим
dir — основной. В CTF-контексте 90% работы — именно он. Минимальная команда требует всего два параметра: URL цели и путь к словарю. Остальные режимы (dns, vhost, fuzz, s3) решают другие задачи и в веб-задачах встречаются реже.📌 Для тренировки поднимите OWASP Juice Shop в Docker — уязвимое приложение с десятками скрытых эндпоинтов. Идеальный полигон, чтобы прощупать Gobuster без риска что-то сломать.
Нельзя эксплуатировать то, чего не обнаружил. Dirbusting — не опциональный шаг, а фундамент любой веб-атаки. Полный разбор флагов, словарей, фильтрации ответов и практические примеры — в развёрнутом материале.
https://hackerlab.pro/blog/gobuster-perebor-direktoriy-i-poisk-skrytyh-faylov-v-veb-zadachah-ctf
❤2👍2
Media is too big
VIEW IN TELEGRAM
Павел Никитин, один из авторов курса, пятикратный победитель The Standoff и специалист с многолетним опытом в Red Team и коммерческих пентестах, рассказывает, как создавалась программа и какой практический опыт авторы вложили в обучение.
Делимся архивной записью и напоминаем, новый поток стартует 7 сентября.
За 4,5 месяца на курсе отработаем в практической лаборатории полный сценарий атаки на домен: от разведки и получения первого доступа до повышения привилегий, атак на Kerberos, перемещения по сети и захвата Active Directory.
Практика — с первого занятия, 180 ак.ч.
Доступна поэтапная оплата — от 8 995 ₽/мес
Смотрите видео от автора курса и узнайте, что заложено в основу программы курса «Атаки на Active Directory».
➡️Посмотреть программу и записаться
Делимся архивной записью и напоминаем, новый поток стартует 7 сентября.
За 4,5 месяца на курсе отработаем в практической лаборатории полный сценарий атаки на домен: от разведки и получения первого доступа до повышения привилегий, атак на Kerberos, перемещения по сети и захвата Active Directory.
Практика — с первого занятия, 180 ак.ч.
Доступна поэтапная оплата — от 8 995 ₽/мес
Смотрите видео от автора курса и узнайте, что заложено в основу программы курса «Атаки на Active Directory».
➡️Посмотреть программу и записаться
👍1👏1
Новый дизайн codeby.net теперь стоит по умолчанию.
Мы собирали его с конца июня, месяц он жил в переключателе стилей, и вчера я включил его для всех.
Главное изменение не в цвете. Поверх разделов встали шесть витрин, которые собирают материалы по смыслу: Разборы, Практика, Инструменты, Карьера, Обсуждения и Лента с фильтрами под себя. Раньше сильный разбор трёхлетней давности найти было сложнее, чем свежий флуд на первой странице. Теперь у каждого направления своя страница с сортировками и пагинацией.
Мобильная версия наконец работает как надо: до фикса гость на телефоне видел пустую полосу вместо шапки. Светлая тема доведена до нормального контраста и запоминает твой выбор. Согласие на cookie стало карточкой в углу и больше не съедает клики по низу экрана.
Что ещё не готово, я расписал там же честно: часть срезов Ленты помечена «Скоро», каталог инструментов пока пустой, витрины показывают не все темы раздела. Чиню по порядку, и этот порядок двигают замечания в теме.
Если новый вид не зашёл, прежний стиль никто не удалял: https://codeby.net/misc/style, переключение мгновенное.
Разбор всех изменений и место для замечаний:
https://codeby.net/threads/novyi-dizain-foruma-stal-osnovnym-chto-izmenilos-i-kak-vernut-prezhnii.95467/
Заходи, потыкай и напиши в теме, что мешает: страница, разрешение экрана, светлая или тёмная тема. По таким сообщениям правки выходят в тот же день.
Мы собирали его с конца июня, месяц он жил в переключателе стилей, и вчера я включил его для всех.
Главное изменение не в цвете. Поверх разделов встали шесть витрин, которые собирают материалы по смыслу: Разборы, Практика, Инструменты, Карьера, Обсуждения и Лента с фильтрами под себя. Раньше сильный разбор трёхлетней давности найти было сложнее, чем свежий флуд на первой странице. Теперь у каждого направления своя страница с сортировками и пагинацией.
Мобильная версия наконец работает как надо: до фикса гость на телефоне видел пустую полосу вместо шапки. Светлая тема доведена до нормального контраста и запоминает твой выбор. Согласие на cookie стало карточкой в углу и больше не съедает клики по низу экрана.
Что ещё не готово, я расписал там же честно: часть срезов Ленты помечена «Скоро», каталог инструментов пока пустой, витрины показывают не все темы раздела. Чиню по порядку, и этот порядок двигают замечания в теме.
Если новый вид не зашёл, прежний стиль никто не удалял: https://codeby.net/misc/style, переключение мгновенное.
Разбор всех изменений и место для замечаний:
https://codeby.net/threads/novyi-dizain-foruma-stal-osnovnym-chto-izmenilos-i-kak-vernut-prezhnii.95467/
Заходи, потыкай и напиши в теме, что мешает: страница, разрешение экрана, светлая или тёмная тема. По таким сообщениям правки выходят в тот же день.
👍4🔥3❤2
Сразу на платформу решать таски или сначала полгода учить сети и Linux?
Один лагерь говорит: без фундамента ты просто копируешь команды из райтапов. Другой: без быстрых результатов мотивация умрёт раньше, чем дойдёшь до практики.
Оба подхода работают, но для разных людей. Интересно, какой сработал именно у тебя.
🔽 Делимся опытом здесь:
https://codeby.net/threads/platformy-i-ctf-ili-snachala-seti-i-linux-s-chego-nachinat-v-ib.95651?utm_source=tg&utm_medium=engage&utm_campaign=forum_engage
Один лагерь говорит: без фундамента ты просто копируешь команды из райтапов. Другой: без быстрых результатов мотивация умрёт раньше, чем дойдёшь до практики.
Оба подхода работают, но для разных людей. Интересно, какой сработал именно у тебя.
🔽 Делимся опытом здесь:
https://codeby.net/threads/platformy-i-ctf-ili-snachala-seti-i-linux-s-chego-nachinat-v-ib.95651?utm_source=tg&utm_medium=engage&utm_campaign=forum_engage
👍1
Ты ставишь таймер на разведку или копаешь, пока не уверен в полноте скоупа?
Два часа в разведке, поверхность атаки шире, чем казалось. Поддомены тянут новые сервисы, каждый сервис открывает ветку. Можно копать дальше, а можно остановиться и ломать то, что уже есть.
Жёсткий таймбокс дисциплинирует, но иногда ключевой вектор лежит именно в той части скоупа, которую не успел покрыть. Без таймера разведка раздувается на полпроекта, зато ничего не пропускаешь.
🔍 Обе позиции рабочие, и обе больно кусаются. Разбираем в теме:
https://codeby.net/threads/taimboks-na-kazhdyi-etap-pentesta-distsiplina-ili-poterya-nakhodok.95653?utm_source=tg&utm_medium=engage&utm_campaign=forum_engage
Два часа в разведке, поверхность атаки шире, чем казалось. Поддомены тянут новые сервисы, каждый сервис открывает ветку. Можно копать дальше, а можно остановиться и ломать то, что уже есть.
Жёсткий таймбокс дисциплинирует, но иногда ключевой вектор лежит именно в той части скоупа, которую не успел покрыть. Без таймера разведка раздувается на полпроекта, зато ничего не пропускаешь.
🔍 Обе позиции рабочие, и обе больно кусаются. Разбираем в теме:
https://codeby.net/threads/taimboks-na-kazhdyi-etap-pentesta-distsiplina-ili-poterya-nakhodok.95653?utm_source=tg&utm_medium=engage&utm_campaign=forum_engage
🔥2👍1
Python или сразу C: с чего начинать путь в ИБ?
Один лагерь говорит: без указателей и стека ты не поймёшь ни один таск по pwn. Другой: сегфолты убьют мотивацию раньше, чем ты напишешь первый эксплойт. А кто-то берёт оба языка параллельно и не видит в этом проблемы.
Аргументы у каждой стороны сильные. Быстрый результат на Python или глубокое понимание машины через C: что на старте важнее?
Расскажи свой путь
Один лагерь говорит: без указателей и стека ты не поймёшь ни один таск по pwn. Другой: сегфолты убьют мотивацию раньше, чем ты напишешь первый эксплойт. А кто-то берёт оба языка параллельно и не видит в этом проблемы.
Аргументы у каждой стороны сильные. Быстрый результат на Python или глубокое понимание машины через C: что на старте важнее?
Расскажи свой путь
👍1
Ты начинал с конкретной специализации или сначала пробовал всё подряд, пока не зацепило?
Один совет: бери OWASP Top 10, разворачивай
🔹 Если ты уже прошёл этот этап, хватит одного абзаца.
Расскажи, с чего начинал
Один совет: бери OWASP Top 10, разворачивай
DVWA и ломай. Другой: пентест это одно из десятка направлений, и если выберешь не то, потеряешь полгода. Оба звучат разумно, и именно поэтому новичок застревает между ними.🔹 Если ты уже прошёл этот этап, хватит одного абзаца.
Расскажи, с чего начинал
Ты начинал с задачи или просто ковырял Kali наугад?
Открываешь меню: Nmap, Burp, Metasploit, Hydra, ещё сотня названий. Хочется попробовать всё. Через час закрываешь терминал с ощущением, что не понял ничего.
На форуме разделились: одни говорят «бери конкретную задачу и учи только нужные инструменты», другие «сначала разберись в структуре дистрибутива, потом выбирай направление». Оба подхода рабочие, но у каждого свои ловушки.
🔹 Что сработало у тебя? Один абзац, две минуты.
Расскажи, с чего начинал
Открываешь меню: Nmap, Burp, Metasploit, Hydra, ещё сотня названий. Хочется попробовать всё. Через час закрываешь терминал с ощущением, что не понял ничего.
На форуме разделились: одни говорят «бери конкретную задачу и учи только нужные инструменты», другие «сначала разберись в структуре дистрибутива, потом выбирай направление». Оба подхода рабочие, но у каждого свои ловушки.
🔹 Что сработало у тебя? Один абзац, две минуты.
Расскажи, с чего начинал
Какую нейросеть ты реально используешь в пентесте?
Два лагеря: одни гоняют всё через универсальную LLM, другие ищут агентов, заточенных под кибербез. Первые получают галлюцинации в критический момент. Вторые упираются в границы ниши.
Один абзац, две минуты: модель, задача, честная оценка.
Назови свой стек
Два лагеря: одни гоняют всё через универсальную LLM, другие ищут агентов, заточенных под кибербез. Первые получают галлюцинации в критический момент. Вторые упираются в границы ниши.
Один абзац, две минуты: модель, задача, честная оценка.
Назови свой стек
UDP-сканирование: ты доверяешь zenmap или запускаешь nmap руками?
Дефолтный профиль zenmap не трогает UDP. Коллега советует создать кастомный и не мучиться. Формально он прав: под капотом тот же движок.
Но второй коллега запускает
Час до дедлайна, подсеть большая, отчёт утром.
Кто теряет порты, а кто время?
Дефолтный профиль zenmap не трогает UDP. Коллега советует создать кастомный и не мучиться. Формально он прав: под капотом тот же движок.
Но второй коллега запускает
nmap -sU из терминала, выставляет --max-retries и --host-timeout вручную. Говорит, что графическая обёртка прячет статусы вроде open|filtered, и на нестабильном канале ты просто не заметишь потерянные порты.Час до дедлайна, подсеть большая, отчёт утром.
Кто теряет порты, а кто время?
14 резюме за три дня. Где вакансии?
За месяц работодатели не разместили на форуме ни одной. А специалисты по ИБ пришли сами: SOC, пентест, AppSec, Red Team, сети. Девять джунов, четыре мидла, один тимлид. Шестеро готовы выйти через неделю или сразу.
Если ты нанимаешь безопасников, конкурентов у тебя сейчас нет. Кто разместит вакансию первым, окажется на вкладке один.
Посмотреть, кто пришёл →
За месяц работодатели не разместили на форуме ни одной. А специалисты по ИБ пришли сами: SOC, пентест, AppSec, Red Team, сети. Девять джунов, четыре мидла, один тимлид. Шестеро готовы выйти через неделю или сразу.
Если ты нанимаешь безопасников, конкурентов у тебя сейчас нет. Кто разместит вакансию первым, окажется на вкладке один.
Посмотреть, кто пришёл →
Открыл райтап через час или через три?
Задача на учебной площадке. Час крутишь, два крутишь, перебрал очевидное. Рядом лежит райтап, оплаченный вместе с подпиской. Одни говорят: открыл, повторил команды, флаг сдан, но в голове пусто. В реальном пентесте подсказки не будет. Другие: застревать на три вечера подряд это не обучение, а фрустрация, после которой площадку бросают.
Замечено: если открываешь слишком рано, задача забывается через день. Если упираешься сам, запоминаешь надолго. Но «слишком рано» у каждого своё.
Где твоя граница списывания?
Задача на учебной площадке. Час крутишь, два крутишь, перебрал очевидное. Рядом лежит райтап, оплаченный вместе с подпиской. Одни говорят: открыл, повторил команды, флаг сдан, но в голове пусто. В реальном пентесте подсказки не будет. Другие: застревать на три вечера подряд это не обучение, а фрустрация, после которой площадку бросают.
Замечено: если открываешь слишком рано, задача забывается через день. Если упираешься сам, запоминаешь надолго. Но «слишком рано» у каждого своё.
Где твоя граница списывания?