В мае на конференции по практической информационной безопасности Positive Hack Days VII впервые состоялся конкурс HackBattle. В первый день PHDays посетители могли принять участие в отборочных соревнованиях, а двое участников, выполнивших наибольшее количество заданий за наименьшее время, вышли в финал HackBattle, который состоялся на второй день конференции на главной сцене. В этой статье мы расскажем, как проходило соревнование, а также предложим всем желающим попробовать свои силы в тех задачах, которые использовались на конкурсе.
Отбор
Поскольку финал конкурса должен был проходить на главной сцене в условиях ограниченного времени, а также под пристальным наблюдением профессиональной публики, нам были нужны люди, которые не спасуют перед тем, что на них устремлены тысячи глаз, и смогут за адекватное время решить поставленную задачу.
Чтобы найти таких хакеров, мы решили использовать формат отборочных соревнований на основе задач типа CTF, но с ограничением по времени в 25 минут. Для отбора было подготовлено 9 задач, ранжированных по уровню сложности. При этом мы постарались подобрать такие задачи, сценарии которых встречаются в ходе настоящих пентестов.
Каждый гость конференции имел возможность один раз поучаствовать в отборочных соревнованиях, предварительно зарегистрировавшись. Участвовать можно было только с рабочих станций, предоставляемых организаторами. Первый посетитель, пожелавший принять участие в конкурсе, появился буквально в первые минуты работы форума, а общее число хакеров, принявших участие в отборе HackBattle, составило 97 человек!
Финал
Положение дел в отборочной таблице менялось на протяжении всего первого дня конференции, и лишь к вечеру там закрепились двое участников, которые и вышли в финал. Ими стали Влад “vos” Росков и Омар “Beched” Ганиев.
Финал состоялся на второй день, на главной сцене PHDays. Все происходящее на мониторах двух хакеров-финалистов транслировалось на большой экран, с профессиональными комментариями специалистов по информационной безопасности:
Финалистам было предложено атаковать одну и ту же инфраструктуру. По легенде это был департамент безопасности вымышленного города:
Задание состояло из трех этапов: на первых двух нужно было атаковать веб-приложение, чтобы сначала попасть в панель администратора приложения, а потом получить возможность выполнения команд с правами веб-сервера. На третьем этапе предстояло повысить привилегии до root и запустить bash-скрипт. По легенде игры он активировал сирену в здании департамента. Отдельно стоит отметить, что прохождение задания не было линейным, каждый этап можно было преодолеть несколькими способами, что наши финалисты и показали.
Битва была жаркой, до последнего момента было неясно, кто именно придет к финишу первым! Полную версию финала можно посмотреть на www.phdays.com/broadcast/, 24 мая, part 2 mix stream с 2:00:00. Если вы не хотите раньше времени знать победителя, то не читайте дальше, пока не посмотрите запись.
Победителем оказался Влад “vos” Росков! После конкурса мы взяли у финалистов небольшое интервью, чтобы они поделились впечатлениями от HackBattle.
Влад “vos” Росков:
«Обожаю хак-батлы один на один, ребята придумали крутой формат для шоу с финальной битвой на сцене. Уважуха за разноплановые таски. Бечеду тоже уважуха, достойный соперник :)
В этот раз была всего одна дуэль, на которую отбирались топ-2 по количеству решенного за первый день — было б круто в следующий раз построить турнирную сетку и все битвы сделать один на один».
Омар “Beched” Ганиев:
«Мне уже доводилось состязаться в подобном формате в более скромной обстановке — в рамках конференции RuCTF. В целом это наиболее захватывающий формат для зрителей и весьма интересный формат для участников. Сложность для организаторов — провести соревнование без огрехов в инфраструктуре, а главное — сделать задачи такими, чтобы они действительно решались за короткое время (10–30 минут). В итоге получается динамичное соревнование на скорость, которое демонстрирует зрителям подходы участников к решению задач.
Авторам HackBattle как раз таки удалось соблюсти такой баланс и сделать задачи, которые решаются разными способами и позволяют участникам выбрать свой путь.
Еще один плюс для участников — соревнование занимает совсем немного времени, так что можно размяться и отвлечься на конференции. С удовольствием поучаствую еще раз и рекомендую продумать масштабирование баттлов в формат турнира — чтобы не только два человека могли сражаться в финале. Схожее соревнование Rapid Fire проводила компания ForAllSecure».
Задания для конкурса: попробуйте сами
Задания для отбора и финала вы можете скачать в формате OVA:
http://static.ptsecurity.com/phdays/2017/hackbattle/creds.txt — доступы к виртуальным машинам
static.ptsecurity.com/phdays/2017/hackbattle/1.ova
static.ptsecurity.com/phdays/2017/hackbattle/2.ova
static.ptsecurity.com/phdays/2017/hackbattle/3.ova
static.ptsecurity.com/phdays/2017/hackbattle/4.ova
static.ptsecurity.com/phdays/2017/hackbattle/5.ova
static.ptsecurity.com/phdays/2017/hackbattle/6.ova
static.ptsecurity.com/phdays/2017/hackbattle/7.ova
static.ptsecurity.com/phdays/2017/hackbattle/8.ova
static.ptsecurity.com/phdays/2017/hackbattle/9.ova
static.ptsecurity.com/phdays/2017/hackbattle/FINAL.ova
Задачи сильно различаются по сложности. Разбор одной из них (№ 3 по ссылке), за решение которой полагались скромные 100 баллов, можно найти ниже. Конечно, этот спойлер не стоит читать тому, кто хочет попробовать самостоятельно решить эту задачу.
Разбор задания № 3
При переходе по ссылке участник видел веб-приложение с приветственной надписью «User 1, you have been successfully logged in.»:
При клике по ссылке «My profile» открывалась страница профиля User 1:
Сообщение в строке Flag однозначно говорило, что флага тут нет.
Ссылка профиля имела вид «/profile/1», если попробовать перейти по ссылке «/profile/2», то отображался профиль User 2:
К большому сожалению, флага тут также не было, зато очевидно, что присутствует IDOR-уязвимость. Переберем первые 100 id с помощью Burp Intruder:
На id 72 видим аномалию в столбце Length, заходим:
Это то что надо! И флаг теперь выглядит вполне реалистично.
Авторы: Александр Морозов, Анатолий Иванов, Анна Вехтева, Positive Technologies
Поделиться с друзьями
Комментарии (4)
r85qPZ1d3y
07.07.2017 02:46+1Эмм, а почему разница на 2 байта? Или в Length Burp не в байтах указывается?
Oxoron
07.07.2017 10:58В байтах. Разница с соседними запросами составляет 12 байт (1668 — 1656 = 12), достигается она за счет того, что у учетной записи администратора и пользователя разные значения в полях Login, Role, Flag.
r85qPZ1d3y
07.07.2017 20:57Отлично, со зрением у меня совсем плохо, не увидел, что третья цифра тоже различается ;)
briskly
Это было очень круто смотреть в живую