Вторжение в Gameland

Написал John Frost, в Статьи » Security.
Взлом крупного сервера

Сергей "John Frost" Колесник (john-frost@yandex.ru, john-frost@coderszone.info)
Дмитрий "Lex Luthor" Фаттахов (lutorcorp@yandex.ru, lex@coderszone.info)

Скачать видео взлома

Вечер понедельника. Погода ни к черту, пишу новую программу под заказ... Скукотища... Мою меланхолию неожиданно прервало мигающие окошко миранды, писал Димон (aka Lex Luthor). Он выдвинул предложение поучавствовать нашему сайту (www.coderszone.info) в каком-то конкурсе организованном компанией геймлэнд.Если кто не в теме то геймлэнд - это 5 млн. читателей, крупнейшие журналы разных категорий: Хакер, Страна игр, Sync, DVD Expert и множество других. Вообщем крупная рыбка ;) Захожу на www.eaward.ru, регистрируюсь, и вот тут как раз все и начинается...

Одна голова хорошо, а две аськи круче.
Внешне дизайн был аскетичным, ничего особенного. Посмотрев на список участников и на жури, я принял на себя обязаности по занесению нашего проекта в конкурс и его продвижение. Для начала мне пришлось заполнить анкету и залить скриншот. Потом убедившись, что все вроде нормально я свернул браузер и продолжил написание проги. Через пару часов я решил посмотреть прошел ли наш проект модерацию или нет, развернул окошка горящего лиса, обновил страницу и увидел вот такую вот надпись внизу страницы:

Database error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
The query string was: SELECT *, 'Мои проекты' AS catName, CASE WHEN approved=0 THEN 'Ожидает модерации' WHEN approved=1 THEN ' ' WHEN approved=2 THEN 'Не допущена к участию' END AS status FROM projects WHERE userid=


Это уже моментально зажгло во мне интерес - еще бы, ошибка сама прыгает в наши руки ;) Такого я не мог пропустить. Учитывая то, что раньше я такую ошибку не наблюдал, я предположил что за пару часов истекло время сессии (нет, не той что будет зимой), поэтому запрос приводит к ошибке. Начав исследование я обратил внимание на большое содержание ява-кода в страницах, но пока решил не разбираться в нем.
Далее я решил проверить что фильтруется при подаче заявки на новый проект, первым претендентом стало поле для ввода названия проекта. Введя
<h1> Привет
и нажав сохранить, я получил прикольную картинку - хтмл теги не фильтровались. Поигравшись вдоволь с тегами я понял, что тут ловить нечего, т.к. все опасные конструкции он фильтрует, со скриптами даже близко не подойдешь.
Пока я ушел в раздумья на попытки взлома разродился Лекс:ajax_login.php, если реально аякс юзают, то была бага в нём, в 2,4 если не ошибаюсь. Тут я вспомнил про ява-скрипты на сайте, и нашел там нужную нам функцию:

function ajax_login() {

        $('loginLoading').style.display="block";
        $('registation_container').style.display="none";

        new Ajax.Request("ajax_login.php?email=" + $('user').value, {
        method: "post" ,
        parameters: "email=" + $('user').value + "&pass=" + $('password').value,
        onSuccess: function(transport) {
            window.location.href="myprojects.php";
        },
        onFailure: function(transport) {
            $('loginLoading').style.display="none";
            $('loginFailure').style.display= "block";
        }
        });
    }


То есть процес авторизации юзера с именем "admin" и паролем "111" выглядел так http://www.eaward.ru/ajax_login.php?email=admin@eaward.ru&pass=111
Введя заветную строчку я получил "юзер нот фаунд", облом :(. Проверил на своем зарегистрированом юзере - тоже облом. Решили искать багу дальше.В поисках этой хоть какой-нибудь существенной ошибки было проведено 15 минут...

Ламеризм попадается везде...
И вот она родимая - первая серьезная бага. Мы тестировали скрипт www.eaward.ru/myprojects.php, для этого пришлось зарегится и игратся с параметрами, все вроде бы фильтровалось, я в течении 5 минут безуспешно пытался найти хоть какую-нибудь зацепку пока Лекс не стал рассыпался комплиментами в адрес кодеров этих скриптов, еще бы такого даже я не ожидал - мы могли изменять данные любой анкеты без прав на это! Ответ был прямо перед глазами. Надо было всего лишь передать переменной action значение 'edit' и указать номер требуемой анкеты, например http://eaward.ru/myprojects.php?action=edit&id=80.
Это сразу же придало нам надежду на успех, еще бы, мы можем изменять данные любых проектов, но мы даже не могли подумать что зайдем гораздо дальше, но об этом ниже. Было решено найти ошибку по серьезней. В ход пошли скуль-иньекции, которые ничего толком не дали за полчаса тестирования. Использовались все известные мне приемы, встроенные подзапросы, но это не дало плодов.
Уверенность во взломе угасала. Вернее мы могли приколотся и испортить имеющиеся на сайте проекты конкурсантов, но это было слишком мелко. Мы решили отложить пока взлом и выйти на улицу. Свежий воздух сделал свое дело. Лексом была выдвинута последняя идея.
Смотри, сказал он, была бага в ипб - под видом картинки грузили ява скрипт,т.е единственное, что мы можем сделать это грузить. Решили проверить загрузку файлов на сервак, сначала показалось что возможность провести такое есть только при регистрации проекта, решили проверить. Множественные попытки не увенчались успехом, двойное расширение, подмена расширения - всё это жестока фильтровалось, в этом случае защита была хорошей. Но как оказалось был еще один способ загрузки файлов, после регистрации проекта, и был он очень дырявый, ну уж очень ;) Почему-то кодеры этого проекта решили, что проверка должна проводится пре регистрации, чтобы отсечь злобных хацкеров, а вот если ты уже зареген, то ты уже не только хороший человек, но даже и не подумаешь ничего плохого сделать ;) Железная логика, не правда ли? ;)
Димон решил не становится хорошим человеком и залил сюда http://eaward.ru/uploaded/ скриптик, выводящий набо буковок, проверки на заливку небыло ни какой. Можно было залить абсолютно любой файл, независимо от расширения, размера и содержимого, такого я еще нигде не видел.
Тут же лекс пытался залить шел, но почему то ничего не вышло, он ушел в раздумья. Я тем временем, быстренько зарегил нового участника (мыло можно было вводить любое, оно тоже не проверялось), набросал малюсенький скриптик и залил его.
<? print("<BR>][ello</BR>");
   passthru('cat /etc/passwd/');
?>

Затем вбил в браузер http://eaward.ru/uploaded/82.php и увидел следующую картину(это кусочек):

Вторжение в Gameland

описание: Красивое зрелище ;)

Пока я смотрел на эту радушную картинку, лекс все-таки умудрился залить шел, у апача был root. Взлом удался. Наступила какая-то эйфория, даже не верилось что все так просто. Димон ушел дрыхнуть, хотя из-за пережитого (еще бы, раньше такого не делали ни разу) долго не мог уснуть. Он еще много не знал тогда, иначе бы вообще не уснул ;)

Разбор полетов или любопытство взяло верх
Прошло где-то минут десять, пока я тупо смотрел в монитор с запущенным шелом. Ну вроде бы все, взлом сделали, что же делать дальше? Задефейсить или поприкалыватся, а может вообще удалить все и по тихому уйти? НЕТ, все это какой-то вандализм. Было решено сообщить об ошибке админу сайта. Удалив шел, я решил написать админу сайта письмецо с описанием ошибок, но на сайте не было его адреса. Вспомнив что организатор этого конкурса компания Геймлэнд, я придумал решение. Редактора журнала "PC ИГРЫ" с которым одно время часто общался по теме кодинга, был сейчас онлайн. Связавшись с ним по аське, я обьяснил суть проблемы и написал описание ошибок, он обещал их срочно передать программистам. И действительно, через несколько часов пришло письмо с благодарностями мне и Лексу ;)
После того как я отправил письмо, я решил идти спать, т.к. на следующий день мне надо было здавать зачеты по экономике(которые я так и не здал ;)). Все два часа что я спал мне снился отдел К врывающийся ко мне в дом и кадры из фильма Хаттабыч. Вхолодном поту я проснулся и решил проверить исправили ли ошибки на сайте, хотя если честно в душе я надеялся что они этого еще не сделали. Я зашел снова, лазейки еще работали. Залил шел и залез на сервак, на котором хранилось очень много интересной информации и около 10 сайтов геймлэнда + их бэкапы в архивах ;) Меня захлестнула волна любопытства. Полазив еще где-то час на серваке я много чего узнал и сделал, но пусть это останется моей тайной ;) Сделав все что мне нужно, я удалил логи и снова уснул, теперь уже до утра.
Вывод: иногда очень тривиальные и глупые ошибки допускаются даже в таких крупных компаниях как геймлэнд. Просто представь масштабы того, что могло бы произойти если эту ошибку нашли очень нехорошие редиски - от дефейся десятки крупнейший сайтов до полного уничтожения. Надо проверять все, т.к. куча ошибок на маленьком сайте могут помочь поломать еще кучу других, прекрасно защищенных сайтов. Своеобразная ахилесова пята.
P.S. Самое интересное, что когда опять через неделю туда зашел, я нашел еще несколько багов, так что ошибки везде есть и будут ;)

Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несет!

Info
Запрещай все, кроме разрешенного, иначе вся система безопасности бессмысленна.

Вторжение в Gameland

Описание: Главная страница пораженного портала

Вторжение в Gameland

Описание: html-теги не фильтровались

Вторжение в Gameland

Описание: Конечная цель хацкеров ;)
#1 Vanger |  

ы
а про это нигде не писали?
или аааа... про хак геймленда же как раз писали в хакере,да? мне ктото из вас скидывал статью для хакера, так это оно и есть,да?
Дата публикации: 24 февраля 2008 15:02 | ICQ: --
цитировать
#2 Lex Luthor |  

Они тупили три месяца нам это надоело и мы вложили fellow
Дата публикации: 24 февраля 2008 15:32 | ICQ: --
цитировать
#3 John Frost |  

Все оказалось не так,как планировалось. Везде правят деньги и власть... Геймлэнд не хотела чтобы узнали, что их сервак был похакан, вот тебе и Хакер, журнал о безбашенный взломах и компьютерных хулиганах.... Вывод делайте сами...
Дата публикации: 24 февраля 2008 15:40 | ICQ: 488251
цитировать
#4 Vanger |  

гыыыыы))))))) хакер не захотел выкладывать статью о взломе портала их владельца :-DDDDDD логично что ппц
Дата публикации: 24 февраля 2008 17:29 | ICQ: --
цитировать
#5 Lex Luthor |  

Полюбому wink
Дата публикации: 24 февраля 2008 19:25 | ICQ: --
цитировать
#6 DimaVT |  

весело читать, на ночь глядя
Дата публикации: 27 февраля 2008 02:10 | ICQ: --
цитировать
#7 John Frost |  


DimaVT,
Вот именно у такого важного и большого сервера безопасность оказалось на очень смешном уровне. Представляю, чтобы было, еслиб доступ туда получили конкуренты.
Дата публикации: 27 февраля 2008 09:51 | ICQ: 488251
цитировать
#8 Tau |  

нда... геймланд жжот wink

John Frost Lex Luthor +5 fellow
Дата публикации: 28 февраля 2008 21:25 | ICQ: --
цитировать
#9 Lex Luthor |  

Запомните ребята так делать как геймленд не надо wink
Дата публикации: 29 февраля 2008 06:55 | ICQ: --
цитировать
#10 John Frost |  

Лекс, а что с картинками в статье? их чето нету....
Дата публикации: 29 февраля 2008 12:35 | ICQ: 488251
цитировать
#11 Lex Luthor |  

Щас всё гуд
Дата публикации: 9 марта 2008 16:09 | ICQ: --
цитировать

Добавить комментарий


Включите эту картинку для отображения кода безопасности
обновить код



 

Лучшие новости

Наш опрос

Мы в интернете


Профиль

Добро пожаловать, гость. Войдите, или зарегистрируйтесь.
Логин:

Пароль:

Забыли пароль?

Друзья


хомяк Немиро Алексея


Музыка микросхем
Хак-академия

Интересные ссылки


Обслуживание канализации: канализационные трубы. Труба? Консультация врача.
кондиционеры в екатеринбурге
имплантация зубов