Что такое SQL injection и как найти ее с помощью программы SQLmap

SQL injection — это уязвимость, в которой злоумышленник создает или изменяет текущие SQL-запросы для отображения скрытых данных, их изменения или даже выполнения опасных команд операционной системы на стороне сервера базы данных. Атака выполняется на базе приложения, строящего SQL-запросы из пользовательского ввода и статических параметров.

 

SQLmap — это инструмент с открытым исходным кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатирования уязвимостей SQL-инъекций и захват серверов баз данных.

Команды для работы с приложением:

 

-u для указания URL

 

-random-agent для снижения подозрительной активности

 

-tor для использования защищенного канала

 

-dbs смотрим какие базы доступны

 

-table смотрим таблицу

 

-columns смотрим колонки

 

-dump скачиваем путь к базе

 

-current-user инфо базы данных, включая ее название, номер версии, а также текущего пользователя

 

-passwords сохраненные пароли в базе

 

-level Эта опция требует аргумента, который определяет уровень тестов для выполнения. Существует пять уровней. Значение по умолчанию — 1, где выполняется ограниченное количество тестов (запросов). Напротив, уровень 5 будет тестировать гораздо больше скриптов и границ. Полезные значения, используемые sqlmap, указаны в текстовом файле xml / payloads.xml. Следуя инструкциям, если sqlmap пропускает инъекцию, вы должны иметь возможность добавлять свою собственный полезный скрипт для тестирования тоже! Что проверяется при разном уровне тестирования:

 

1) запросы GET и POST level 1

 

2) значения заголовка HTTP Cookie тестируются в level 2

 

3) значение HTTP-агента User-Agent / Referer проверяется на level 3

 

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

 

-risk Эта опция требует аргумента тоже, который определяет риск выполнения тестов. Существует три значения риска. Значение по умолчанию равно 1, что является безобидным для большинства точек ввода SQL. Значение риска 2 добавляет к уровню по умолчанию тесты для сильных SQL-запросов, основанных на запросах, и значение 3 добавляет также тесты SQL-инъекций на основе OR. В некоторых случаях, например, SQL-инъекция в инструкции UPDATE, инъекция полезной нагрузки на основе OR может привести к обновлению всех записей таблицы, что, конечно же, не так, как хочет злоумышленник. Согласно предыдущей опции скрипты для применения этой опции лежат в текстовом файле xml / payloads.xml, и вы можете свободно редактировать и добавлять свои собственные.

 

Как защитится:

1. Не помещать в БД данные без обработки.

2. Не помещать в запрос управляющие структуры и идентификаторы, введенные пользователем.

3. Добавить капчу

4. Ввести лимиты на поступление запросов с одного IP

 

 

 

 

 

 

 

 

 

 

 

 

 

gallery/arrow-31203_960_720

И помните все показанное выше, сделано в целях обучения!!!

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