
SQL Hacking
Xakep, номер #030, стр. 030-044-3
Стандартные юзеры
В Microsoft SQL сервере для нас предусмотрели дефолтного юзера "sa" без пароля, а в MySQL сервере по дефолту идет "root" без пароля. Только законнектиться ты сможешь не на всякий сервер. MySQL обычно сидит на 3366 порту, а Microsoft SQL - на 1433-м. Проверь телнетом - открыт ли он :). Если да - собери у себя клиент (его можно бесплатно слить на www.mysql.com) и попробуй проломиться на сервер под перечисленными выше аккаунтами. Кстати, в случае виндов Microsoft SQL обычно запускают под админом, и если там оставлен стандартный юзер, то ты можешь свободно слить http://www.securiteam.com/exploits/5YP0D003FQ.html (прогу на Visual C++ 6.0) и получить "командную строку" на сервере.
Получаем рута локально
Поиметь базу, безусловно, очень интересно (особенно если она с Credit Cards =), но еще интереснее захватить всю тачку. И специально для этого предусмотрительные кодеры SQL постоянно допускают всяческие ошибки :). Только тебе в большинстве случаев будет нужен shell-доступ к тачке, на которой крутиться SQL-сервер. Замечу, что у большинства админов MySQL запущен не под root'ом, т.е. так, что ты получишь доступ только к самой базе данных.
1. MySQL 3.20.32. Этот MySQL имеется локально (в смысле нужен shell-доступ), причем необходим клиент (обычно это "/usr/bin/mysql", может быть "/usr/local/bin/mysql"). Слей эксплоит с http://www.hack.co.za/exploits/daemon/sql/mysql.sh. Тебе потребуется рабочий аккаунт в базе, и если mysqld висит под root'ом - ты благополучно заполучишь тачку.
2. MS SQL 7.00.699. Можно убить Microsoft SQL рассматриваемой неудачной версии, причем удаленно. Проверь, открыт ли на тачке 1433 порт. Если SQL-сервер получит по этому порту в потоке TCP больше двух нулевых (NULL или \0 в Си) байт, то он совершит изощренный суицид, как это делал гражданин Кавабата у Пелевина в повести "Чапаев и пустота". На http://www.securiteam.com/exploits/3G5QMPPQ1G.html ты можешь взять скриптик для сканера Nessus (который можно слить с http://www.nessus.org), изготовленный специально для выполнения описанного выше ритуала.
3. MySQL версии меньше 3.23.31. Любой MySQL версии, меньшей указанной, можно локально поиметь. Если запущен под рутом - получить рута :) Хотя, как водится, потребуется рабочий аккаунт на ломаемом серванте. Тут http://act.knu.ac.kr/exploit/mysql.html есть листинг эксплоита, который поможет в твоей благой миссии.
4. MySQL версий 3.22.29 и ниже, 3.23.8 и ниже. Здесь для тебя предусмотрено право менять пароли любых SQL-ных юзеров. Для проведения смены пассвордов необходим аккаунт c правами на одну из баз данных. Заходишь, значит: "/usr/bin/mysql -u<юзер> -p", вводишь пароль. Пишешь: "CREATE DATABASE haxor;" - оно должно вернуть: "Query OK, 1 row affected (0.0x sec)". Значит, все оки-доки, дальше вводишь: "GRANT select ON haxor.* TO root@localhost IDENTIFIED BY 'пароль';". Все, пароль юзеру "root" ты сменил (можешь теперь смотреть и менять любые базы). =)
Тулзы
В процессе поиска общего языка с чьим-то сервером SQL тебе наверняка может пригодиться удаленный подборщик паролей - его можно слить тут: http://warex.box.sk/files/crackers/sqldict.exe. Для него есть куча словариков - ftp://ftp.ox.ac.uk/pub/wordlists.