0x81
19.12.2022, 01:00
Sqlmap - это кроссплатформенный сканер с открытым исходным кодом, который позволяет в автоматическом режиме тестировать веб-сервисы на наличие SQL инъекций, а затем использовать их для получения контроля над базой данных.
Установка на Windows
Для начала работы нам необходимо установить Python. Установщик Python для Windows можно найти на официальном сайте (https://hpc.name/redirector.html#https://www.python.org/downloads/?ref=vc.ru).
На сайте две ветки - 2.x и 3.x, но скачать и установить лучше ветку 3.x. Sqlmap корректно работают с каждой из этих версий, но в дальнейшем нам потребуется версия 3.x.
Загрузить последнюю версию sqlmap можно здесь (https://hpc.name/redirector.html#https://github.com/sqlmapproject/sqlmap/zipball/master). Распакуйте архив в любую удобную папку (чтобы было проще ее найти, можно распаковать в папку С:\Users\).
Для запуска вначале нужно открыть командную строку. Нажмите Win+R, в появившемся окне введите cmd и нажмите enter. Пример запуска:
code:
С:\Users\Admin\sqlmap>python ./sqlmap.py -u http://161.35.92.161/page.php?id=2
Установка на Mac OS X
Для начала установим Python. Для этого откройте терминал и запустите следующую команду:
code:
brew install python3
Теперь установим sqlmap:
code:
brew install sqlmap
Запуск sqlmap для Mac OS X:
code:
sqlmap -u http://161.35.92.161/page.php?id=2 --dbs -o -random-agent
Проверяем на SQL-инъекции при помощи sqlmap
Начинаем проверку
Попробуем найти уязвимости следующей командой. Параметр --dbs означает, что нам интересны имена баз данных. В случае успеха и наличия уязвимости, после определения баз данных можно перейти к поиску таблиц и получения нужных данных. Команду необходимо вводить в консоль.
code:
python sqlmap.py -u http://161.35.92.161/page.php?id=2 --dbs -o -random-agent
Через некоторое время скрипт может попросить нас уточнить некоторые данные. Выбираем "нет", чтобы скрипт прогнал все тесты.
Скрипт выводит отчет:
После продолжения анализа нас в первую очередь интересует строчка в конце:
Цитата:
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N].
Как можно видеть, скрипт определил, что параметр id уязвим и предлагает протестировать другие параметры. В нашем конкретном случае других параметров нет, но в реальных веб-приложениях таких параметров может быть десятки, так что имеет смысл проверить все.
Итоговый отчет:
В итоге скрипт не только определил, что параметр id является уязвимым, но и версию СУБД, а также получил название используемой базы данных на сервере - vc_test, в которой содержится контент сайта. Эту информацию можно найти в конце сгенерированного отчета.
В дальнейшем для злоумышленника уже, как правило, не проблема получить данные в таблицах, а, возможно, и полный контроль над всей БД, а то и всем нашим сервером, если для запросов используется пользователь с широкими правами.
Кроме того, sqlmap позволяет задавать http заголовки и параметры Cookies, что довольно удобно для тестирования, особенно когда для получения результата запроса требуется авторизации.
Пример тестирования POST-запроса. Параметры, которые передаются в теле запроса, записываются в опцию скрипта --data. Необходимые параметры для POST-запроса можно подсмотреть в консоли браузера (Ctrl + Shift + I в Windows, затем перейти в вкладку Network, совершить нужное действие, а затем изучить каким образом формируется запрос).
code:
sqlmap.py -u http://localhost/login --data="username=alex&password=pass" --dbs -o -random-agent
После авторизации обычно необходимо передать нужные Сookie. В sqlmap за это отвечает опция --cookie. Нужные значения cookies можно получить в инструментах разработчика вашего браузера. (в Windows ctrl+shift+i, затем найдите вкладку Network, а в ней щелкните на запрос с именем домена сайта. В окне справа пролистайте пока не увидите параметр cookie).
Пример команды sqlmap c опцией --cookie:
code:
sqlmap.py -u http://localhost/create --data="name=alex&message=hacked" --cookie="security_level=low; PHPSESSID=05aa4349068a1kkaje4kcqnr9o6" --dbs -o -random-agent
Если параметров несколько, то можно явно указать, какой параметр будем тестировать с помощью опции -p
code:
sqlmap.py -u "http://localhost/profile/?username=alex&page=2" -p username
Можно задавать http заголовки через опцию --headers. Это крайне полезно для тестирования ваших API.
Также если get параметр передается не как get параметр, а как URI, то, в этом случае нужно явно указать с помощью *, что данная часть URI является параметром.
Пример:
code:
sqlmap.py -u "http://localhost/api/v2/news/2*" --headers="Authorization: Bearer " --dbs -o -random-agent
Таким образом можно довольно тщательно протестировать ваше веб-приложение на наличие SQL инъекций.
vc.ru
Установка на Windows
Для начала работы нам необходимо установить Python. Установщик Python для Windows можно найти на официальном сайте (https://hpc.name/redirector.html#https://www.python.org/downloads/?ref=vc.ru).
На сайте две ветки - 2.x и 3.x, но скачать и установить лучше ветку 3.x. Sqlmap корректно работают с каждой из этих версий, но в дальнейшем нам потребуется версия 3.x.
Загрузить последнюю версию sqlmap можно здесь (https://hpc.name/redirector.html#https://github.com/sqlmapproject/sqlmap/zipball/master). Распакуйте архив в любую удобную папку (чтобы было проще ее найти, можно распаковать в папку С:\Users\).
Для запуска вначале нужно открыть командную строку. Нажмите Win+R, в появившемся окне введите cmd и нажмите enter. Пример запуска:
code:
С:\Users\Admin\sqlmap>python ./sqlmap.py -u http://161.35.92.161/page.php?id=2
Установка на Mac OS X
Для начала установим Python. Для этого откройте терминал и запустите следующую команду:
code:
brew install python3
Теперь установим sqlmap:
code:
brew install sqlmap
Запуск sqlmap для Mac OS X:
code:
sqlmap -u http://161.35.92.161/page.php?id=2 --dbs -o -random-agent
Проверяем на SQL-инъекции при помощи sqlmap
Начинаем проверку
Попробуем найти уязвимости следующей командой. Параметр --dbs означает, что нам интересны имена баз данных. В случае успеха и наличия уязвимости, после определения баз данных можно перейти к поиску таблиц и получения нужных данных. Команду необходимо вводить в консоль.
code:
python sqlmap.py -u http://161.35.92.161/page.php?id=2 --dbs -o -random-agent
Через некоторое время скрипт может попросить нас уточнить некоторые данные. Выбираем "нет", чтобы скрипт прогнал все тесты.
Скрипт выводит отчет:
После продолжения анализа нас в первую очередь интересует строчка в конце:
Цитата:
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N].
Как можно видеть, скрипт определил, что параметр id уязвим и предлагает протестировать другие параметры. В нашем конкретном случае других параметров нет, но в реальных веб-приложениях таких параметров может быть десятки, так что имеет смысл проверить все.
Итоговый отчет:
В итоге скрипт не только определил, что параметр id является уязвимым, но и версию СУБД, а также получил название используемой базы данных на сервере - vc_test, в которой содержится контент сайта. Эту информацию можно найти в конце сгенерированного отчета.
В дальнейшем для злоумышленника уже, как правило, не проблема получить данные в таблицах, а, возможно, и полный контроль над всей БД, а то и всем нашим сервером, если для запросов используется пользователь с широкими правами.
Кроме того, sqlmap позволяет задавать http заголовки и параметры Cookies, что довольно удобно для тестирования, особенно когда для получения результата запроса требуется авторизации.
Пример тестирования POST-запроса. Параметры, которые передаются в теле запроса, записываются в опцию скрипта --data. Необходимые параметры для POST-запроса можно подсмотреть в консоли браузера (Ctrl + Shift + I в Windows, затем перейти в вкладку Network, совершить нужное действие, а затем изучить каким образом формируется запрос).
code:
sqlmap.py -u http://localhost/login --data="username=alex&password=pass" --dbs -o -random-agent
После авторизации обычно необходимо передать нужные Сookie. В sqlmap за это отвечает опция --cookie. Нужные значения cookies можно получить в инструментах разработчика вашего браузера. (в Windows ctrl+shift+i, затем найдите вкладку Network, а в ней щелкните на запрос с именем домена сайта. В окне справа пролистайте пока не увидите параметр cookie).
Пример команды sqlmap c опцией --cookie:
code:
sqlmap.py -u http://localhost/create --data="name=alex&message=hacked" --cookie="security_level=low; PHPSESSID=05aa4349068a1kkaje4kcqnr9o6" --dbs -o -random-agent
Если параметров несколько, то можно явно указать, какой параметр будем тестировать с помощью опции -p
code:
sqlmap.py -u "http://localhost/profile/?username=alex&page=2" -p username
Можно задавать http заголовки через опцию --headers. Это крайне полезно для тестирования ваших API.
Также если get параметр передается не как get параметр, а как URI, то, в этом случае нужно явно указать с помощью *, что данная часть URI является параметром.
Пример:
code:
sqlmap.py -u "http://localhost/api/v2/news/2*" --headers="Authorization: Bearer " --dbs -o -random-agent
Таким образом можно довольно тщательно протестировать ваше веб-приложение на наличие SQL инъекций.
vc.ru