Учебники

Этический взлом — SQL-инъекция

Внедрение SQL — это набор команд SQL, которые помещаются в строку URL или в структуры данных, чтобы получить требуемый ответ из баз данных, связанных с веб-приложениями. Этот тип атак обычно происходит на веб-страницах, разработанных с использованием PHP или ASP.NET.

Атака SQL-инъекции может быть выполнена со следующими намерениями:

  • Чтобы сбросить всю базу данных системы,

  • Чтобы изменить содержимое баз данных, или

  • Для выполнения разных запросов, которые не разрешены приложением.

Чтобы сбросить всю базу данных системы,

Чтобы изменить содержимое баз данных, или

Для выполнения разных запросов, которые не разрешены приложением.

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

Самый простой способ определить, является ли веб-приложение уязвимым для атаки с использованием SQL-инъекций, — это использовать символ «» в строке и проверить, нет ли ошибок.

Пример 1

Давайте попробуем понять эту концепцию на нескольких примерах. Как показано на следующем снимке экрана, мы использовали символ «» в поле «Имя».

Имя поля

Теперь нажмите кнопку « Войти» . Он должен дать следующий ответ —

Авторизоваться

Это означает, что поле «Имя» уязвимо для внедрения SQL.

Пример 2

У нас есть этот URL — http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php

И мы хотим протестировать переменную «страница», но посмотрим, как мы вставили символ «» в строку URL.

Переменная страница

Когда мы нажимаем Enter, он выдаст следующий результат с ошибками.

Результат с ошибками

SQLMAP

SQLMAP является одним из лучших инструментов, доступных для обнаружения SQL-инъекций. Его можно скачать с http://sqlmap.org/

Он поставляется предварительно скомпилированным в дистрибутив Kali. Вы можете найти его по адресу — Приложения → Оценка базы данных → Sqlmap.

После открытия SQLMAP мы переходим на страницу, на которой у нас есть SQL-инъекция, а затем получаем запрос заголовка. Из заголовка мы запускаем следующую команду в SQL —

./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0) 
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3

SQLMAP проверит все переменные, и результат покажет, что параметр «id» уязвим, как показано на следующем снимке экрана.

Карта SQL

SQLNinja

SQLNinja — это еще один инструмент для внедрения SQL, который доступен в дистрибутиве Kali.

SQLninja

Инъекция JSQL

JSQL Injection находится на Java и делает автоматические SQL-инъекции.

Инъекция JSQL

Быстрые советы

Чтобы ваше веб-приложение не подвергалось атакам с использованием SQL-инъекций, следует помнить о следующих моментах:

Не проверенный пользовательский ввод в базу данных не должен проходить через графический интерфейс приложения.

Каждая переменная, которая передается в приложение, должна быть обработана и проверена.

Пользовательский ввод, который передается в базу данных, должен быть заключен в кавычки.