В последнее время базы данных стали очень популярными из-за их качеств и возможности хранения огромного количества данных. Благодаря возможности использовать БД в сети, многие веб-дизайнеры предоставляют доступ к БД непосредственно с сайта. Это делают для того, чтобы сделать доступ к имеющейся на сайте информации максимально удобным для рядового юзера. Но из-за недостаточной квалификации многих программистов, допускаются ошибки безопасности при создании скриптов, служащих для доступа к БД. Сейчас стало стандартом де-факто использовать базы данных SQL со скриптами Perl и PHP. И это действительно очень удобно, но также очень опасно. Не будем забывать, что большинство дефейсов делается благодаря дырам в скриптах. В этой статье я опишу САМЫЕ частые оплошности кодеров в скриптах управления БД.
Начнем
Самая частая ошибка заключается в том, что названия таблицы берут из URL, что чаще всего встречается в форумах и бордах. Т.е. для обращения к форуму best с сайта blah-blah.gov используется строчка
http://www.blah-blah.gov/base.pl?forum=best.
Скорее всего, параметр forum будет заноситься в переменную $forum. Значит горе-кодер в своих скриптах прописал что-то типа:
SELECT * FROM $forum;
UPDATE $forum SET DATE = ‘09/08/02’
Вроде бы всё хорошо, но вся изюминка в том, что названия таблицы обычно не проверяют на правильность. А это значит, что ничто не сможет нам помешать написать в URL’е строку такого содержания:
“http://www.blah-blah.gov/base.pl?forum=best;SELECT * FROM best; DROP TABLE best”. После чего запустится скрипт и выполнит следующий SQL-запрос:
SELECT * FROM best;
DROP TABLE best;
Который сначала выводит все содержимое таблицы best, а потом удаляет её. Этот запрос, конечно, пройдёт только тогда, когда у пользователя достаточно прав, для того, чтобы удалить таблицу. Но админов, которые дают такие права пользователям, в Internet’е навалом, сам проверял=].
Теперь ты можешь без особого напряга удалить какую-нибудь базу. Но этого как правило мало. Мы же не вандалы. Допустим на нашем сайтеwww.blah-blah.gov для того, чтобы использовать форум надо сначала зарегистрироваться. Не вопрос. Идём на страницу регистрации. Как правило, для пользователей тоже создают базу и запрос, который вставляет нового юзера выглядит так:
INSERT INTO userbase
Values (firstname=’$fname’, lastname=’$lname’, age=$age);
Как ты уже понял, описанный выше способ применим и для других параметров, передаваемых в URL. А теперь представь, что мы знаем, что в этой таблице есть также поле xlev, значение которого принимает два значения, либо user либо superuser. Как несложно догадаться, если ты superuser, то можешь делать с форумом, что захочешь. Но проблема в том, что если это поле пустует, то пользователь считается простым user”ом. Не порядок. Если повнимательнее рассмотреть данный запрос можно увидеть параметр $age, стоящий без кавычек. Как правило, числовые данные не проверяют на действительность, и туда можно записать что угодно. Этим мы и воспользуемся. Вводим всё как надо, а в строке age пишем:25,xlev=’superuser’. Вот ты и бог=]. Как видишь, ничего сверх сложного здесь нет. Надо только подумать чуть-чуть.
DEFAULT
А теперь самое главное. Можно искать сайты с тупыми скриптами, передающими параметры в URL’е, а можно сделать умнее=]. Я уверен, что ты уже знаешь, что многие админы, особенно начинающие, ставят всё по дефолту. К них ещё нет опыта, и не знают, что это не есть гуд. Хочу заметить, что этим грешат также и матёрые сисопы. Так вот. Многие либо оставляют логин и пароль SQL сервера по умолчанию, или меняют пароль на какой-нибудь типа 54321. Вот этим и надо прежде всего воспользоваться. В Microsoft SQL Server по умолчанию стоит юзер sa без пароля, а в MySQL, root также без пароля. MsSQL и MySQL сидят на портах 1433 и 3366 соответственно. Так что качай клиент и попробуй вломится на базу под стандартным юзером. Если тебе не повезло и пароль не подходит, то советую тебе скачать брутфорс, для удалённого перебора паролей SQL (найти его можно на нашем сайте в File ->> Password Crack).
EXPLOITS
Для взлома SQL серверов, существует много exploit’ов. Описывать их я не буду, т.к. чтобы описать хотя бы самые достойные из них понадобится много места и время, да к тому же я не считаю это нужным. На нашем сайте в архиве exploit’ов ты найдёшь исходники как для получения root’а, так и для удалённый DoS атак на SQL сервер. К тому же рассчитывая на то, что в последнее время в MsSQL нашли два десятка таких дыр, DoS на MsSQL становится более актуальным.
Заключение
Взлом БЗ SQL является одним самых результативных взломов на сегодняшний день. В базах данных можно найти всё, от списка пользователей сервера, до номеров кредитных карт. Выше я описал только самые основные методы взлома, но их вполне хватит, чтобы взломать примерно 30% БД в Internet’е, конечно, импровизируя в каждом отдельном случае