За сколько можно взломать мобильную сеть?
Надежно ли электронное правительство
в эпоху WikiLeaks и Anonymous?

Взлом АСУ ТП – голливудские байки
или реалии сегодняшнего дня?
Интернет-банкинг – возможна ли победа
в битве с мошенниками?

Киберпреступность, кибершпионаж, кибервойна. Где грань?

понедельник, 6 февраля 2012 г.

PHDays-2011. Наливайка глазами участника

Все меньше и меньше времени остается до мая, определились команды CTF, Брюс Шнайер покупает билеты, а мы готовим программу. И в преддверии PHDays-2012 решили вспомнить самые интересные моменты прошлогоднего форума.

Под катом – описание, пожалуй, самого зрелищного и веселого конкурса PHDays-2011 – «Наливайка», в котором проверялись навыки участников по анализу защищенности веб-приложений.

Напомним, что по правилам состязания, конкурсанты должны были провести успешную атаку на веб-приложение, защищённое фильтром безопасности Web Application Firewall, причем каждые 4 минуты участникам, на чьи действия WAF реагировал чаще, предлагалось выпивать 50гр. крепкого горячительного напитка, а именно текилы.

Своими впечатления от конкурса с нами поделился Владимир Воронцов

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

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

Как и следовало ожидать, когда мы сели за столы, количество людей, занявших зрительские места за нашими спинами, в несколько раз превышало количество участников. Для участия в конкурсе требовалось подключиться к проводной ЛВС. В моем случае это оказалось проблематично, так как ноутбук не был оборудован портом Ethernet. Но все эти мелкие технические трудности были решены  благодаря руке помощи Ams, который протянул мне свой нэтбук. Также требовалось расписаться в бумаге отказа от ответственности в случае причинения вреда здоровья, вызванного чрезмерным употреблением алкоголя, что для многих участников, к тому времени, уже было довольно проблематично.


В моем пьянстве прошу никого не винить


Долго ли, коротко ли, конкурс начался: организаторы сообщили URL сайта, который надо было исследовать на уязвимости. Все радостно бросили смотреть на его содержимое, и были приятно удивлены тем, что оно в точности копировало официальный сайт PHD. Практически все страницы, кроме фотоальбома, вообще не имели параметров GET, поэтому я решил начать именно с этого модуля. С виду это выглядело как LFI: запрос image=aaa.jpg содержал путь к картинке, который, скорее всего, не фильтровался. Как только это стало понятно, организаторы предложили всем выпить «по первой», так как прошло уже целых 3 минуты с начала конкурса.

 
 Вечер, текила, взлом

Теперь дело пошло существенно быстрее… Стало понятно, что без сниффера невозможно понять что возвращается в HTTP ответе, но сниффера у меня не было – нетбук-то чужой. Пока скачивался Wireshark, благо Интернет на конференции был довольно быстрый, делать было решительно нечего, и тут организаторы предложили всем участникам повторить хорошее начинание и выпить «по второй». Один товарищ, кажется из PPP, был, мягко говоря, не в восторге от такой частоты поглощения спиртосодержащих, но продолжил борьбу и получил бурные овации от зрителей за стойкость. Кто-то из зрителей крикнул ему: «This is SPARTA!».


 This is SPARTA!

Когда скачался сниффер, я увидел, что это был LFR, а не LFI и стал перебирать имя файла с флагом, или хотя бы директории, в которой он находиться (позже оказалось, что это было самой большой ошибкой). Для этого написал на javascript короткий код, и запустил его прямо из адресной строки браузера. Скрипт перебирал варианты URL и делал window.open. Не самая удобная реализация, но интерпретаторов на нетбуке также не было. На самом деле, перебор был не полный, так как по заголовкам HTTP-ответа сервера было понятно, что мы имеем дело с Windows машиной, а стало быть, функции чтения файлов были подвержены уязвимости, основанной на особенностях API это ОС.

 Зрители болеют или завидуют?


Таким образом, файл image.jpg можно было прочитать через имя ima<<.<< если он был единственным файлом, подходившем под маску ima*.*. Организаторы были первую подсказку, содержание которой ничем не помогло: «В фотоальбоме локальный инклюд». Ну спасибо, едем дальше. Уже перестал вести счет времени и рюмках, которые приходилось пить всем вместе… Долго ли коротко ли, не без Божией помощи, промаринованный текилой мозг решил прочитать содержимое файла index.php. Вбил запрос ?image=index.php и получил… Штрафную! Запрос не отработал, видимо WAF, которой все мы тут пытались обойти, отфильтровал подстроку «.php», и тогда воспользовавшись тем же незамысловатым приемом с регулярными выражениями, отправил запрос ?image=index.<< и, о чудо, получил его содержимое в сниффере.

В содержимом файла в глаза сразу бросилось $flag=”что-то там на 32 байта”.
И я, радостно вбив это в поле зачета очков, получил первый флаг. Собственно, что тут было думать, при исследовании реальных веб-приложений всегда первым делом надо получать исходный код, если есть такая возможность. Но мы же «умные», понимаем, что обычно флаг лежит в отдельном файле… И опять-таки здесь упустил еще один флаг, который был в config.inc.php, также описанном в index. В свое оправдание могу сказать, что не проходило и 5 минут, как мы выпивали по стопке.

Организаторы дали очередную подсказку, о том, что в COOKIE есть SQL – инъекция. Собственно, там был только параметр – PHPSESSID. Попробовал указать 32hex’ и получил 500 ошибку. Быстро прикинув, что это слепая инъекция, и шансы получить из нее прок без инструментов крайне малы, я почти отчаялся.

Тут спасло время, которое просто-напросто истекло, и конкурс завершился.
Было очень весело, и необычно. Исследование веб-приложений для всех участников, сидящих за столом, было поведено до автоматизма. Но не очень просто собираться с мыслями, когда толпа орет «давайте, давайте, быстрее», и регулярно отвлекают какими-то стаканчиками с прозрачной жидкостью. Зато впечатления после конкурса останутся у всех надолго и у участников, и у зрителей, недовольных там не осталось.
Да. И еще. Мне дали какой-то приз. Кажется… 

 Булькает?

Комментариев нет:

Отправить комментарий