взломЛеонид «R0id» Стройков/ r0id@mail.ru /НедетскийвзломМаленькиепроблемымогучего хакераТы уже не раз читал на страницах «Хакера» о различных методах взлома, да и в Сетиполно статей на аналогичные темы. Вот только большинство из них затрагивает лишьчасть случаев, и, как правило, самых простых. Примитивные инъекции, удаленныеинклуды, активные xss — все это только верхушка айсберга. Скорее всего, в твоейпрактике были ситуации, когда тебе приходилось отступать и прекращать атаку. А ведьпри поломке крупного ресурса шанс найти распространенный баг очень мал. Поэтомупри проведении более-менее серьезных атак требуется максимум внимательности и сообразительности.На решение поставленной задачи порой уходят сутки, а то и недели,но настоящие профессионалы никогда не сдаются. Не зря говорят: «Профессионал— это тот, кто ломает то, что хочет сломать, а не то, что может сломать». Сейчас я расскажуо наиболее часто встречающихся ситуациях, осложняющих и без того непростуюхакерскую жизнь.Проблемы со sql-injectionКак ни крути, но в последнее время рулятименно sql-инъекции. Программеры всечаще юзают MySQL/MSSQL-базы, не забываякодить потенциально бажные движки :).О sql-injection уже несколько раз писалосьв журнале, поэтому не вижу смысла повторяться(лучше почитай подшивку «Хакера»).Так что приступим непосредственно к сути.Как ты знаешь, все инъекты можно разделитьна два типа: слепые и не слепые. Особенныйгеморрой при взломе создают слепые инъекции,так как в этом случае мы лишаемся возможностивидеть ответ на свой запрос и самуошибку. Причиной в php-скриптах можетслужить, например, error_reporting(0) (режимсокрытия сообщений об ошибках в php)и символ «@», поставленный перед функцией.Чтобы тебе было понятнее, рассмотрим это/ 078xàêåðявление на конкретном примере. Возьмемнорвежский ресурс www.karriereguiden.noи перейдем по ссылке:http://www.karriereguiden.no/presentation.php?id=144Если теперь подставить символ одинарнойкавычки в значение параметра id, то вместопредполагаемой ошибки мы увидим простопустую страницу:http://www.karriereguiden.no/presentation.php?id=144'Следовательно, есть вероятность наличиябага. Подобрав количество полей, можноубедиться, что уязвимость действительноприсутствует:http://www.karriereguiden.no/presentation.php?id=-1+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,26,27,28,29,30,31,32,33+/*Если подобрано правильное количество полей,на экране будут отображены предназначенныедля вывода поля. В нашем случае — шестоеи седьмое. В некоторых конкретных случаяхдля подбора количества можно использоватьконструкцию «order by». Это выглядит так:http://target.com/index.php?id='+order+by+10/*Если полей больше 10‐ти (или ровно 10), тоошибки не будет (или при слепом инъекте страницаотобразится в обычном виде), в противном02 /98/ 07
взломDVDНаши права в базе =)случае мускул злобно ругнется (а при слепом инъекте ты увидишьпустую страницу). Однако существенно осложнить твоюжизнь может еще и фильтрация определенных символов.Бывает, что, даже при наличии прав file_priv, прочитать файлне получается из-за фильтрации кавычки. Обойти это можнопри помощи char() вот таким запросом:http://www.iamcal.com/misc/londonbloggers_v1/station.php?id=-1+union+select+1,2,load_file(char(47,101,116,99,47,112,97,115,115,119,100)),4,5,6,7,8,9,10,11,12+/*В результате мы прочитаем /etc/passwd с сервера, на которомхостится ресурс www.iamcal.com. Кстати, для того чтобывручную не переводить символы в их ASCII-код, я написалнехитрый скриптец, сорец которого лежит на нашем диске =).Если ты думаешь, что сложнее уже некуда, то глубоко ошибаешься.Самый геморрой все еще впереди. Бывает, чтов самом запросе, в имени поля, нельзя использовать буквы.На первый взгляд кажется, что ловить здесь абсолютно нечегои надо сворачивать удочки. Но, на самом деле, обойтифильтрацию можно при помощи aes_decrypt()/aes_encrypt():http://fat-cat.co.uk/fatcat/artistInfo.php?id=-1+union+select+1,2,3,4,aes_decrypt(aes_encrypt(user(),0x71),0x71),6+/*Ответ вернет нам лишь одну строчку — «root@localhost» =).Еще один распространенный случай — фильтрация пробела,которая, к слову, тоже успешно устраняется с пути хакерского :).Дело в том, что вместо пробела можно использовать комментарии.То есть если мы хотим подобрать количество полейв таблице на www.saworship.com, то запрос будет не таким:http://www.saworship.com/article-page.php?ID=-1+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,26,27,28,29,30,31,32,33,34,35,36,37,38,39/*&Page=singles.phpА вот таким:http://www.saworship.com/article-page.php?ID=-1/**/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,26,27,28,29,30,31,32,33,34,35,36,37,38,39/*&Page=singles.phpЭтот запрос успешно выполнится, и ты увидишь отображаемыеполя =). Как ты понял, геморройных ситуаций припроведении инъекций хватает. Иногда получается так, чтонесколько описанных мной случаев комбинируют междусобой. Но главное не паниковать и не опускать руки.Нестандартные xssТеперь настало время рассмотреть нестандартные xss-баги.Что такое? Я слышу неодобрительные возгласы и свист гнилыхпомидоров с задних рядов… Зря, товарищи, зря! Тех, кто не считаетxss уязвимостью, я попрошу удалиться, ибо все сказанноемной вы все равно пропустите мимо ушей. Для остальных напомню,что при успешном раскладе с помощью даже примитивногоxss-бага порой можно получить пользовательский аккаунтили доступ к панели администратора сайта. Но в последнеевремя поля стали фильтровать все чаще, и простая проверкавида alert('xss') в 80% случаев уже не прокатывает.Возьмем популярный в рунете ресурс www.hotel.ru.Полазив немного по линкам, несложно заметить самописныйфорум. Нас, собственно, больше всего интересует формочка длясоздания тем/сообщений. Повтыкав во все поля стандартныеalert('xss'), многие подумают, что xss здесь и непахло. Но это только на первый взгляд. Вбив javascript-код в поле«Сообщение» и присмотревшись к сорцу странички, можнообнаружить, что кавычка никак не фильтруется, а перед нашимкодом открыты тэги , и :Причины возникновения хак-геморрояКак ты уже понял из статьи, все наиболее крупные взломы не обходятся без такого явления, как «хак-гемор», или геморройпри взломе. Причины этого явления кроются, прежде всего, в недружелюбно настроенных по отношению к нам (хакерам)админах. Приведу пример. Не так давно, при взломе сервера достаточно крупной забугорной организации, мне удалосьполучить и расшифровать хэш рутового пароля к базе. Причем имелась возможность удаленного подключения к БД. Но тутменя ждал облом — файр жестко фильтровал все подключения к открытым портам, разрешая коннект лишь с определенныхIP-адресов. Аналогичные правила работали и для 21‐го и 22‐го портов. Этот факт несомненно огорчил, хотя доступк интересующей меня базе я в итоге получил, раскрутив слепой инъект и подобрав таблицы с полями. Этот случай лишьподтверждает необходимость использования всех возможных методов при взломе. Ведь если шанс есть, значит, нужнопробовать его реализовать =).На диске тынайдешь мой скриптchar.pl, с помощьюкоторого можно безлишнего геморрояпреобразовать символыв их ASCII-код.iНикогда не сдавайся.Ищи новые путирешения проблемы.Все простые пути уженашли до тебя.!Внимание! Вседействия взломщикапротивозаконны! Информацияпредставленаисключительнос целью ознакомления!Ни автор, ниредакция за твоидействия ответственностине несут!На DVD-диске тынайдешь видео повзлому к статье.xàêåð 02 /98/ 07/079