(моя заметка в Журнале Хакер, Октябрь 2008 г.) МЕСТЬ ЗА ХВАСТОВСТВО XXX ЗАГОЛОВОК XXX «Интересные новости от Криса» Искал я как-то Интернете игровые новости и немного увлекся одним форумом. Там человек по имени Крис оговорился, что у него где-то на его сервере есть информация о релизе новой версии игры, но эта информация выйдет в свет не совсем скоро, а только с релизом игры. Это была новая версия одной из горячо мною любимых игр. Но, поскольку релиз намечался не очень скоро, он меня действительно заинтриговал своим хвастовством о том, что у него уже имеется какая-то информация о новой версии игры. И примечательно то, что я только что ничего не смог найти как раз на эту тему через поисковик! Я не удержался и захотел попробовать сам взглянуть на этот новостной релиз. XXX ЗАГОЛОВОК XXX «Сбор информации» Теперь передо мной стояло много задач, первостепенная из которых состояла в нахождения сервера Криса (далее сайта), где он хранил заготовки этой самой заметки). Я просмотрел его профайл на том же сайте, но там никаких ссылок на другие ресурсы не было. Плохо, подумал я, но не печально, тут же подхватил я, поскольку есть еще такой злобный поисковичок как Google, который выдает кучу полезной для хакера информации. Ввел я полный ник «Крис Лейтон» в поиск и как примерно предполагал, увидел на первой же странице и возможное хранилище исходников этой самой заметки, и емейл этого самого Криса, который хранился на gmail.com. Попал я на достаточно солидный и крупный ресурс, посвященный новостям мира игр. Сайт, судя по контактам на нем, британский, и полностью на английском языке. Как я сразу увидел, просматривая размещенные новости на этом сайте, Крис – один из множества редакторов этого проекта. Новостей там было очень много, и авторов тоже немало. Ничего подозрительного не увидев, я решил пойти спать, т.к. уже было достаточно поздно. Но тут мне пришла в голову неплохая мысль - поставить брут на ночь на то самое мыло, которое я увидел в поисковике. Брут решил делать по словарю английских слов, так как сайт британский, и мало ли, случится частое совпадение, когда у большинства пользователей сети один и тот же пароль как на емейле, так и на всех сайтах, где они зарегистрированы. Пусть ночь не пройдет впустую, а с пользой, подумал я и пошел спать. XXX ЗАГОЛОВОК XXX «Анализ ситуации» Вот и утро наступило. Торопливо подбежал я к компьютеру и включил монитор. К сожалению, меня ждало небольшое разочарование. Увидев, что за ночь ничего хорошего мой брут не дал, я решил его остановить. Значит не все так просто. Что ж, тем интереснее. Ладно, подумал я, придется потратить время и проанализировать сайт на уязвимости самому. Осмотревшись, я решил, что это какой-то самописный движок, незнакомый мне до этого, поэтому поиск багов в инете на других ресурсах под какую-либо версию я сразу отверг. Тоска, подумал я, все придется проверять самому. XXX ЗАГОЛОВОК XXX «Битва идей» Первая мысль, которая меня посетила, была такой: поскольку сайт очень посещаемый и, значит, свежеобновляемый, подумал я, то есть неплохие шансы того, что там очень часто появляется мой друг Крис, то начать можно было бы с поиска XSS (), - уязвимости, которая позволила бы мне получить на сниффер cookie администратора. Но для этого мне надо было зарегистрироваться и заставить его перейти по нужной мне заранее заготовленной ссылке. Да, подумал я, пожалуй, оставим этот вариант на потом, поскольку это может отнять больше времени и не дает гарантий результата, нежели другие, оставшиеся у меня в запасе идеи по поводу уязвимостей на этом сайте. XXX ЗАГОЛОВОК XXX «Знакомство с жертвой» Оказалось, что www.totalvideogames.com – весьма популярный и массовый забугорный портал с весьма оригинальным и красивым дизайном о новинках в игровой индустрии. Количество посещений его в сутки составляет около 25-30 тысяч уников. XXX ЗАГОЛОВОК XXX «Первым делом, первым делом, самолеты!» Ну, думаю, что сейчас? Пролистав пару страниц, заметив переменные в ссылке, думаю: сяду я проверять этот сайт на наличие дыр формата Sql-инъекция. А вдруг? Хотя я, если честно, не верил. Это уже привычная для меня процедура, которая нечасто себя оправдывает. Потратив не один десяток минут, я не верил тому, что я вижу! Бог мой, неужели здесь, на этом портале есть Sql-инъекция? Да, да, горе-кодеры что-то упустили ? А ведь это весьма полезная для хакера уязвимость, лучше и быть не может, да и не надо! XXX ЗАГОЛОВОК XXX Что ж такое Sql-инъекция и для чего она? Суть ошибок класса SQL-injection заключается в том, что ввиду некорректной обработки данных, передаваемых скрипту, взломщик может изменить составляемый скриптом SQL-запрос. Возьмем самый банальный пример: в случае такого взлома, скажем, банковской системы, взломщик может изменить запрос таким образом, что SQL-сервер после его обработки выдаст содержимое всей таблицы, в которой хранится полная информация о всех вкладчиках банка, вплоть до номеров их кредиток, их домашние адреса, телефоны и тому подобная информация конфиденциальная информация. В нашем случае удаленный атакующий может внедрить произвольный sql-код, используя отсутствие фильтрации переменной article_id. Теперь на практике в нашем случае. Данная уязвимость может быть использована для получения хешей паролей пользователей портала: XXXXXXXXXX http://www.victim.com/pages/articles/index.php?article_id=67777' [тут_наш _sql-запрос] XXXXXXXXXX Ну мы не будем останавливаться на принципах работы базы данных, так как об этом ты можешь прочитать в любой другой статье, которых в рунете навалом, а будем разбираться дальше. Теперь переделываем запрос под себя, подбирая количество столбцов. Эх, нелегкое это дело, особенно если это делать вручную - кто знает, сколько их окажется Разумеется, существует ORDER BY и GROUP BY для более быстрого подбора, но я привык проверять все вручную, т.к. мне так больше нравится. И вот результат оправдал мои старания, оказалось 25 столбцов. В случае правильного подбора в данном случае исчезнет ошибка и выведется обычая рабочая страница: XXXXXXXXXX http://www.victim.com/pages/articles/index.php?article_id=67777'+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25%23 XXXXXXXXXX XXXXXXXXX Картинка Описание: Подбор количества столбцов XXXXXXXXX Подобрав количество столбцов, посмотрим, какие из них отобразились на странице. Например «2». Убедившись, что «2» умеет выводить информацию, подставляем теперь вместо «2» в нашем запросе: concat_ws(char(58),username,password,email,icq) – это вывод через поле «2» с разделением двоеточием (concat_ws(char(58)) выводимых параметров(username,password,email,icq), не забыв до этого, разумеется, убедиться, что существует таблица, именуемая именно Users, и что поля в ней именуются именно username, password, email и icq (а не, к примеру, membername, passwd или т.п.). Разумеется, мне пришлось всё это подобрать: XXXXXXXXXX http://www.victim.com/pages/articles/index.php?article_id=67777'+union+select+1,concat_ws(char(58),username,password,email,icq),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25+from+users%23 XXXXXXXXXX Ну вот, теперь перед нами на экране ник, хеш пароля и емейл первого пользователя. Ну и ICQ, если есть, выведется. У данного пользователя аськи нет, поэтому она не выводится. XXXXXXXXX Картинка Описание: Получение ника и хеш-пароля первого пользователя (админа) XXXXXXXXX Теперь мне осталось расшифровать этот пароль, поскольку зашифрован он был, как это часто бывает, в формате md5. Сел я перебирать знакомые мне сервисы по расшифровке md5, а у меня их было порядка 4-5 весьма крупных, на которых можно было попробовать его расшифровать. Однако, к моему удивлению, ни на каком из тех сервисов того пароля не было. Ладно, тогда мы спросим у людей, которые постоянно их брутят. И решил перебрать форумы хакеров в рунете. Запостив на одном из них просьбу расшифровать хеш, примерно через 2 часа увидел пароль Криса. XXX ЗАГОЛОВОК XXX «Трюк с поиском админки» Ну а теперь оставалось вроде бы как самое простое – найти админку и зайти в нее, посмотреть список черновых заметок моего друга Криса и найти ту заметку, которую я хотел прочитать. Начал я искать админку. Потратив 5 минут и перебрав все основные банальные варианты админок, понял, что вручную я её скорее всего не подберу. Начал думать, как бы еще я мог получить какую-то информацию о содержимом сайта. И тут мне в голову пришла отличная идея, которая иногда очень даже полезна! Из опыта своей работы в интернете по развитию и продвижению сайтов я знал, что многие админы кладут в корень сайта файлик robots.txt с настройками и указаниями для поисковых ботов, что индексировать, а что – нет, и прочими тонкостями. То есть, грубо говоря, все директории, куда не следует заглядывать боту, там без проблем можно указать после спец. ключевых слов. Вот я и поспешил проверить, есть ли там этот файлик, и мне повезло, потому что админы этого крупного солидного проекта как раз в нем и указали адрес к админке От себя могу добавить, что я бы за неделю не подобрал вручную эту входную часть ссылки (\tvgadmin). Вот это как раз то, что мне и надо было, подумал я. И хорошо, что не стал терять времени на поиск XSS на этом сайте. Зачем нести другие затраты, если в этом нет необходимости? XXX ЗАГОЛОВОК XXX «В админке» Попав в админку, я немного осмотрелся и убедился, что мои первоначальные доводы о том, что над этим проектом трудится большое количество редакторов – оказалось верным. А Крис Лейтон – самый главный из них, посколько может назначать и убирать редакторов через админку И неподалеку я нашел раздельчик с Черновиками, в котором находилось то, ради чего я потратил столько времени! Ура, товарищи, ура! XXXXXXXXX Картинка Описание: Ура! Мы в админке! Пойду искать и читать новость… XXXXXXXXX XXX ЗАГОЛОВОК XXX «Итог» Ходит мнение, что найти уязвимость в популярном продукте – невозможно. Однако это не совсем так! Да, компании платят большие деньги за тестирование и современные программисты пишут уже с учетом того, что существуем мы с вами, любители взлома. Сотни тестеров проверят каждый кусочек кода, но никто и ничто не гарантирует полной защищенность! XXXXXXXXXXX Действуй. XXXXXXXXXXX Вперед! Сбор информации и оценка ситуации – важнейшие составляющие успеха… XXXXXXXXXXX Самое главное – пробовать и делать! И ты добьешься своего… XXXXXXXXXXX XXXXXXXXXXX ДОПОЛНЕНИЕ XXXXXXXXXXX Danger! Внимание! Информация представлена исключительно с целью ознакомления! Ни автор за твои действия ответственности не несет! XXXXXXXXXXX _____ P.S. Я понимаю, что все это по сути ламерский взлом для многих посетителей данного форума, но все же - это моя первая публикация в журнале Хакер за Октябрь 2008. Прошу меня сильно не пинать за этот художественный рассказ))) P.P.S. Отдельная благодарность H00k. (с) ЛифчиC5CB (Остап Бендер) (с) xakep.ru
`Баянчик` Тема , как то неочень оформленна... . Почему такое оформление заголовков???? XXX ЗАГОЛОВОК XXX
Неуловимый мститель Честно, в Хакере все статьи одинаковые... найдут скуль, придумаю историю про неё... Может к каждой скули из темы Sql-inj тоже придумать чего-нить?
да он даже шелл не залил ) так бы расписали еще на страницу.. - желаю тебе > 100 столбцов в каждой скуле. перебирай ненаперебирайся! хек на 10 минут чел замутил за 2 дня. site:* filetypehp в первой десятке бага. роботс.txt - да чувакккккк даааааа!!! ты знал, признайся? УГ. минус ставить не буду, а то еще тему создашь, а у меня хуеви ебани нервы..
ну и мы, простые люди, тоже попали в журнал. приятно. когда-то я мечтал об этом =\ p.s. я не обижен за испорченную репу... я даже этого ожидал.
Любопытно-любопытно...кто бы мог подумать...а зачем админу античата там что-то писать? (риторический_вопросик) == по сабжу. Статья не для ачата, а как раз-таки для популярного журнала, у которого массовый читатель -школьник. Отсюда и развлекаловка..и попытка интриги, литературный сюжет... Если рассказать детям в общих чертах о "любознательных хакерах" и что такое "взлом сайта", то может и сойдет, имхо..
потому как лишняя статья доходов никому не помешает... ИМХО -- а по сабжу.. впринципе уже становится неинтересно (а иногда даже и бесит) читать о SQL-inj в пятой версии
Надо было злой дефейс сделать и написать - админ, ты сраная жопа, я прочитал статью! и пол страницы гритинзов. Ладно, че вы на чела напали - первая статья, первая любовь и т.д. по крайней мере не "как я впарил пинч первокласснице". Литературщины полно и пафоса, но это с опытом придет. Потом не будет расписывать, будет сразу строчку публиковать в sql inj и всё.
А чо ты так БАЯНЧИК , оформил плохо???? Ведь в правилах написанно - что статья должна быть оформленна прилично... . ЧТо ???Сатья про Скуль??? Извините что 3 раз редактирую пост но неудержался ПОсле прочтения твоего Мега взлома я так подозреваю что `xxx` --- ты смотрел порево:-D ЖЕСТь , а там такое публикуют????
Вообще реально (как и выше написано) хакер бесит уже со своими скулями, могли бы что нибуть поновее чтоль придумать
Лично я ожидал чего-то большего.По крайней мере того,чего я не знаю.А тут стандартные росписи про скуль.Обвинения обоснованы.
Журнальчик на память) И запомните: обвинять меня НИКТО не имеет морального права, как бы там ни было. Я не преступник. Так что слова рекомендую подбирать.
Та че вы на парня набросились? Что за привычка такая? Ну не нравиться вам, не ставте плюс, соответствует теме ачата - делейт! Конечно я не спорю она боянистая очень.... >но я привык проверять все вручную, т.к. мне так больше нравится По поводу этого! Мне сердце подсказывает, что и запросы ты GET-ом отправлял, и вот при "проверке в ручную" перебирая каждый столбец, все обращения к странице, а именно ссылка+sql запрос - ЗАПИСЫВАЕТСЯ В ЛОГИ!!!!! ps отвыкай от своей вредной привычки!