В мае на конференции по практической информационной безопасности 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)


  1. briskly
    05.07.2017 17:43

    Это было очень круто смотреть в живую


  1. r85qPZ1d3y
    07.07.2017 02:46
    +1

    Эмм, а почему разница на 2 байта? Или в Length Burp не в байтах указывается?


    1. Oxoron
      07.07.2017 10:58

      В байтах. Разница с соседними запросами составляет 12 байт (1668 — 1656 = 12), достигается она за счет того, что у учетной записи администратора и пользователя разные значения в полях Login, Role, Flag.


      1. r85qPZ1d3y
        07.07.2017 20:57

        Отлично, со зрением у меня совсем плохо, не увидел, что третья цифра тоже различается ;)