Во всех предыдущих уроках мы использовали ручной режим, для поиска уязвимостей 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, и обрамить его двойными кавычками:
После запуска инструмент тестирует все возможные значения для проведения SQL-инъекции.
По итогу сканирования, он сохраняет в память информацию о том, где можно провести инъекцию.
Также, при сканировании SQLmap находит базы данных, которые используются на веб-странице:
Чтобы не затягивать процесс тестирования, я отвечу «Да», чтобы не терять слишком много времени:
SQLmap не знает точно, какую базу данных Вы используете, поэтому отвечаем «Да»:
После завершения сканирования, у нас определилась база данных (MySQL), и еще обнаружен уязвимый параметр GET «username».
Далее инструмент просит подтверждение для дальнейших действий, и я отвечу «No», чтобы не затягивать:
Мы видим отображение базы данных, данные по веб-серверу и наименование технологий, которые применяются в данном веб-приложении.
Посмотрим, что еще мы можем узнать об этом инструменте. Настоятельно рекомендую прочитать справку, с помощью команды «sqlmap —help»:
Просканируем ссылку с помощью записи «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»:
Мы получили список баз данных.
Можем получить текущего пользователя на странице, добавив к основной записи URL – current-user, и исключив – dbs:
А если я пропишу ту же самую запись, только с исключением - - current-user, на - - current-db, то получу используемую базу данных на текущий момент:
Допустим, нам нужно вытащить информацию из текущей базы данных. С помощью 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».
Как видим, существует 6 таблиц в текущей базе данных.
Если нам нужно вытащить информацию из таблицы, к примеру «accounts», то запись будет иметь вид: «--columns -T accounts -D owasp10»:
Мы можем скачать столбцы, с помощью опции «dump», и запись будет выгладеть как: « -T accounts -D owasp10 - -dump»:
Отлично, мы получили логины и пароли всех пользователей. Это еще раз подчеркивает то, что SQLmap очень полезный инструмент.
Так на этом все. Всем хорошего дня!