Найти тему

#19 Исследование SQL-инъекций и работа с SQLmap.

Во всех предыдущих уроках мы использовали ручной режим, для поиска уязвимостей SQL, где мы вставляли код в URL или поля ввода.

Этот урок будет посвящен автоматизации, на примере инструмента SQLmap, и мы повторим то, чему мы научились.

Этот инструмент очень полезен, и очень удобен во многих случаях. Иногда инъекции получаются не такие удобные, и нужно будет вводить выражения большое количество раз, а как раз этот инструмент позволяет предотвратить потерю времени нам.

Для примера, возьмем ссылку из предыдущего урока, где в адресной строке URL присутствет запись: http://10.0.2.7/mutillidae/index.php?page=user-info.php&username=admin&password=aaa&user-info-php-submit-button=View+Account+Details

Нам нужно скопировать эту строку, и запустить SQLmap, предварительно запустив его и добавив аргумент «-u», а также внести адрес URL, и обрамить его двойными кавычками:

-2

После запуска инструмент тестирует все возможные значения для проведения SQL-инъекции.

-3

По итогу сканирования, он сохраняет в память информацию о том, где можно провести инъекцию.

Также, при сканировании SQLmap находит базы данных, которые используются на веб-странице:

-4

Чтобы не затягивать процесс тестирования, я отвечу «Да», чтобы не терять слишком много времени:

-5

SQLmap не знает точно, какую базу данных Вы используете, поэтому отвечаем «Да»:

-6

После завершения сканирования, у нас определилась база данных (MySQL), и еще обнаружен уязвимый параметр GET «username».

Далее инструмент просит подтверждение для дальнейших действий, и я отвечу «No», чтобы не затягивать:

-7

Мы видим отображение базы данных, данные по веб-серверу и наименование технологий, которые применяются в данном веб-приложении.

Посмотрим, что еще мы можем узнать об этом инструменте. Настоятельно рекомендую прочитать справку, с помощью команды «sqlmap —help»:

-8

Просканируем ссылку с помощью записи «sqlmap -u "http://10.0.2.7/mutillidae/index.php?page=user-info.php&username=admin&password=aaa&user-info-php-submit-button=View+Account+Details" —dbs»:

-9

Мы получили список баз данных.

Можем получить текущего пользователя на странице, добавив к основной записи URL – current-user, и исключив – dbs:

-10

А если я пропишу ту же самую запись, только с исключением - - current-user, на - - current-db, то получу используемую базу данных на текущий момент:

-11

Допустим, нам нужно вытащить информацию из текущей базы данных. С помощью SQLmap — это делается фактически в одну запись: «sqlmap -u "http://10.0.2.7/mutillidae/index.php?page=user-info.php&username=admin&password=aaa&user-info-php-submit-button=View+Account+Details" --tables -D owasp10».

-12

Как видим, существует 6 таблиц в текущей базе данных.

Если нам нужно вытащить информацию из таблицы, к примеру «accounts», то запись будет иметь вид: «--columns -T accounts -D owasp10»:

-13

Мы можем скачать столбцы, с помощью опции «dump», и запись будет выгладеть как: « -T accounts -D owasp10 - -dump»:

-14

Отлично, мы получили логины и пароли всех пользователей. Это еще раз подчеркивает то, что SQLmap очень полезный инструмент.

Так на этом все. Всем хорошего дня!