Блог Сергея Попова
180 subscribers
105 photos
3 videos
107 links
Блог создателя codeby
Download Telegram
Три символа, которые ломают авторизацию: как JWT-атаки решают CTF-задачи

На одном из 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 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».

➡️Посмотреть программу и записаться
👍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/

Заходи, потыкай и напиши в теме, что мешает: страница, разрешение экрана, светлая или тёмная тема. По таким сообщениям правки выходят в тот же день.
👍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
👍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
🔥2👍1
Python или сразу C: с чего начинать путь в ИБ?

Один лагерь говорит: без указателей и стека ты не поймёшь ни один таск по pwn. Другой: сегфолты убьют мотивацию раньше, чем ты напишешь первый эксплойт. А кто-то берёт оба языка параллельно и не видит в этом проблемы.

Аргументы у каждой стороны сильные. Быстрый результат на Python или глубокое понимание машины через C: что на старте важнее?

Расскажи свой путь
👍1
Ты начинал с конкретной специализации или сначала пробовал всё подряд, пока не зацепило?

Один совет: бери OWASP Top 10, разворачивай DVWA и ломай. Другой: пентест это одно из десятка направлений, и если выберешь не то, потеряешь полгода. Оба звучат разумно, и именно поэтому новичок застревает между ними.

🔹 Если ты уже прошёл этот этап, хватит одного абзаца.

Расскажи, с чего начинал
Ты начинал с задачи или просто ковырял Kali наугад?

Открываешь меню: Nmap, Burp, Metasploit, Hydra, ещё сотня названий. Хочется попробовать всё. Через час закрываешь терминал с ощущением, что не понял ничего.

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

🔹 Что сработало у тебя? Один абзац, две минуты.

Расскажи, с чего начинал
Какую нейросеть ты реально используешь в пентесте?

Два лагеря: одни гоняют всё через универсальную LLM, другие ищут агентов, заточенных под кибербез. Первые получают галлюцинации в критический момент. Вторые упираются в границы ниши.

Один абзац, две минуты: модель, задача, честная оценка.

Назови свой стек
UDP-сканирование: ты доверяешь zenmap или запускаешь nmap руками?

Дефолтный профиль zenmap не трогает UDP. Коллега советует создать кастомный и не мучиться. Формально он прав: под капотом тот же движок.

Но второй коллега запускает nmap -sU из терминала, выставляет --max-retries и --host-timeout вручную. Говорит, что графическая обёртка прячет статусы вроде open|filtered, и на нестабильном канале ты просто не заметишь потерянные порты.

Час до дедлайна, подсеть большая, отчёт утром.

Кто теряет порты, а кто время?
14 резюме за три дня. Где вакансии?

За месяц работодатели не разместили на форуме ни одной. А специалисты по ИБ пришли сами: SOC, пентест, AppSec, Red Team, сети. Девять джунов, четыре мидла, один тимлид. Шестеро готовы выйти через неделю или сразу.

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

Посмотреть, кто пришёл →
Открыл райтап через час или через три?

Задача на учебной площадке. Час крутишь, два крутишь, перебрал очевидное. Рядом лежит райтап, оплаченный вместе с подпиской. Одни говорят: открыл, повторил команды, флаг сдан, но в голове пусто. В реальном пентесте подсказки не будет. Другие: застревать на три вечера подряд это не обучение, а фрустрация, после которой площадку бросают.

Замечено: если открываешь слишком рано, задача забывается через день. Если упираешься сам, запоминаешь надолго. Но «слишком рано» у каждого своё.

Где твоя граница списывания?