Как я сдал BSCP за 2 часа. Методология подготовки + разбор

в 12:46, , рубрики: bscp, portswigger, информационная безопасность

В каждой профессии есть ритуал инициации, о котором не принято говорить вслух. У хирургов — первая ночная смена с тяжёлым пациентом. У пилотов — посадка вслепую на тренажёре. У багхантеров и пентестеров есть Карлос. Да, тот самый Carlos, чей пароль или токен вы будете выгрызать из экзаменационного приложения PortSwigger, пока где-то на фоне тикает таймер, а Burp Collaborator хранит гробовое молчание.

Всем привет. Меня зовут Султан. Первая попытка, два часа — экзамен сдан.

Как я сдал BSCP за 2 часа. Методология подготовки + разбор - 1

Я знаю, о чём вы подумали: сдать BSCP с первого раза удаётся очень немногим, даже опытным специалистам. Так почему у меня получилось? Ответ — в методологии.

Я не буду рассказывать о вещах, которые и так известны абсолютному большинству. Раскрывать все уязвимости из экзамена смысла нет: существует около сотни различных комбинаций, запомнить их все невозможно.

Подготовка. Три месяца до Карлоса

Что имеем, пройденный двухмесячный курс, полгода до этого. Ничего не успел выучить, лишь бегло пройденный материал. После курса, хаотичное изучения материалов в интернете, решение лаб на различных специализированных платформах. В целом багаж знаний никакой, так, что-то видел, что-то читал.

Никакой магии. Результат «два часа с первого раза» — это не врождённый талант и не везение с билетом. Это три месяца методичной работы. Рассказываю по дням, часам и темам.

Режим

Четыре, пять, иногда шесть часов ежедневно. Без выходных. Звучит сурово, но здесь важен не героизм, а ритм. Мозг привыкает к нагрузке, и через две-три недели Burp Suite перестаёт быть рабочим инструментом и становится продолжением рук. Это состояние, когда ты не ищешь кнопку Repeater взглядом, а уже печатаешь пейлоад.

Такое погружение даёт важный эффект: начинаешь визуально понимать, где находится или может находиться уязвимость. В перспективе это экономит время на экзамене.

Три месяца — оптимальный срок. Меньше — не успеете переварить объём. Больше — начинаете забывать начало.

Подход к изучению тем

База — PortSwigger Web Security Academy. Но я не проходил её линейно. После изучения всего, что представлено по конкретной теме на PortSwigger, искал дополнительные материалы. Читал статьи экспертов. Разбирал раскрытые репорты. Решал лабораторные работы вне Академии — это расширяет понимание уязвимости.

Например, если решаете лабораторные по XSS, всегда старайтесь довести уязвимость до эксплуатации — до кражи куки. На экзамене нужно именно проэксплуатировать уязвимость, а в Академии решение часто ограничивается PoC с alert().

По пунктам

Вот что я делал эти три месяца:

— 4-6 часов ежедневно, без выходных. — Каждая тема: теория PortSwigger → статьи экспертов → раскрытые репорты → сторонние лабораторные работы.

— Приоритет темам, которые реально встречаются на экзамене. GraphQL и подобное — потом.

— Любую XSS доводить до кражи куки. Никаких alert() для галочки.

— После каждой пройденной темы — Mystery Labs по ней же.

— За две недели до экзамена — Mystery Labs на время по всем темам вперемешку.

— Минимум два полных пробных экзамена. Без подсказок, с таймером, до победного.

Последние две недели

Здесь режим меняется. Знания уже есть. Задача — научиться применять их на время.

Я включал таймер и начал решать Mystery Labs вслепую: заходишь и должен сам найти уязвимость. Решал по 15-25 штук в день с лимитом 40 минут на лабу. На экзамене два приложения, в каждом три этапа, условно по 40 минут на каждый этап. Если не укладывался — дорешивал, но фиксировал: где застрял, почему потерял время, какой вектор не проверил сразу.

Пробные экзамены

За три дня до X я провёл два полных пробных экзамена. Условия максимально приближённые к реальным: четыре часа таймера, два приложения, никаких подсказок, скриншоты с адресной строкой.

Первый пробник — не уложился в тайминг, долго думал над третьим этапом, небезопасная десериализация. Второй — чисто. После второго понял: я готов.

Что будет на экзамене, а что нет

Уже известно, что на экзамене представлены не все темы из Академии. По мере прохождения тем становится ясно: некоторые из них просто не могут быть в экзамене из-за специфики этапов.

Например: вы не получите доступ к аккаунту через GraphQL и не прочитаете локальный файл с помощью CSRF. Каждый этап подразумевает конкретные типы уязвимостей — это нужно иметь в виду при планировании подготовки. Существует множество таблиц на просторах интернета с возможными уязвимостями которые могут встретиться на том или ином этапе экзамена, можно на них ориентироваться при подготовке. Вот примерная таблица

Как я сдал BSCP за 2 часа. Методология подготовки + разбор - 2

Что на самом деле решает

В конце этого трёхмесячного марафона я вывел для себя формулу:

Концентрация × Усидчивость × Внимание к деталям = Скорость.

Скорость на BSCP — это не про то, как быстро вы кликаете мышкой. Это про то, как быстро мозг отбрасывает нерабочие гипотезы. А это приходит только с объёмом решённых лабораторных и количеством часов, проведённых в состоянии «я не знаю, что это за эндпоинт, но я узнаю».

И да — огромное желание. Без него три месяца по пять часов в день не вытянуть. Оно либо есть, либо нет.

А теперь — интересное. Разберу одну задачу, которая попалась мне на экзамене. В Академии такого нет. Я показываю её, потому что она как раз о том, что нужно шире изучать тему, нежели представлено в академии.

CSRF: Сброс пароля администратора

На первом этапе второго приложения я получил доступ к аккаунту Карлоса через отравление веб-кеша. В куках была сессия:

Как я сдал BSCP за 2 часа. Методология подготовки + разбор - 3

Первая часть — URL-encoded JSON {"username":"carlos","isloggedin":true}.
Вторая часть после -- — цифровая подпись HMAC. Сервер использует её, чтобы защитить куку от подделки.

Первое что приходит в голову это CSRF атака. Сброс пароля на эндпоинте /new_password. Отправляется POST запрос на смену пароля, в теле которого указан CSRF токен и username для которого меняется пароль. Помнив, что сервер отклонит куку в случае ее изменения, возникла мысль, а что будет, если куку оставить Карлоса, а в теле username=carlos изменить на username=administrator? Правильно, сервер вернет нам куки администратора. Я успешно повысил права до администратора.

Как я сдал BSCP за 2 часа. Методология подготовки + разбор - 4

Благодарность

Отдельное спасибо моему другу и наставнику — Никите (wr3dmast3r). Без его поддержки, советов и веры в меня этот марафон мог бы закончиться иначе.

Спасибо всем за прочтение моей статьи. Буду рад если мои советы и разбор, помогут вам в подготовке к экзамену и приведут вас к долгожданному сертификату.

Сертификат: https://portswigger.net/web-security/e/c/22a248890961507f
Telegram: @PUham9yPQ

Автор: Sultan_13

Источник


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js