Sql инъекции программа: SQL-инъекции’ union select null,null,null — / Хабр

Что такое 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


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

Обсудить в форуме

SQL — инъекция — it-black.ru

SQL — инъекция — it-black.ru

В одной из своих статей я Вас немного знакомил с SQL-инъекцией, а в этой статье я хочу подробней рассказать о данной уязвимости. Давайте сперва вспомним что же это такое:

SQL инъекция — это один из самых доступных способов взлома сайта. Суть таких инъекций – внедрение в данные (передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода.

Если сайт уязвим и выполняет такие инъекции, то злоумышленник может творить с базой данных что угодно. Для избежания таких ситуаций нужно грамотно оптимизировать код и внимательно следить за тем, какой запрос каким способом обрабатывается.

Основные типы инъекций

Реализовать уязвимости посредством SQL-инъекции можно несколькими вариантами:

  • UNION query SQL injection. Реализуется он за счёт ошибки в проверке приходящих данных, которые никак не фильтруются.
  • Error-based SQL injection. Данный тип также использует ошибки, посылая выражения, составленные синтаксически неправильно. Затем происходит перехват заголовков ответа, анализируя которые, можно провести впоследствии SQL-инъекцию.
  • Stacked queries SQL injection. Данная уязвимость определяется выполнением последовательных запросов. Характеризуется он присоединением в конце знака «;». Этот подход чаще реализуется для доступа к реализации чтения и записи данных или же управлением функциями операционной системы, если привилегии это позволяют.
Как проверить свой сайт на SQL-инъекции?

Для установления наличия уязвимости в сети имеется масса готовых автоматизированных программных комплексов. Но можно осуществить простую проверку и вручную.

Для этого нужно перейти на один из исследуемых сайтов и в адресной строке попробовать вызвать ошибку базы данных. К примеру, скрипт на сайте может не обрабатывать запросы и не обрезать их.

Например, есть некий_сайт/index.php?id=38

Самый лёгкий способ — поставить после 38 кавычку и отправить запрос. Если никакой ошибки не возникло, то либо на сайте фильтруются все запросы и правильно обрабатываются, либо в настройках отключён их вывод. Если страница перезагрузилась с проблемами, значит, уязвимость для SQL-инъекции есть.

После того как она обнаружена, можно пробовать избавиться от нее.

Например, когда число полей большое — 30, 60 или 100. Команда GROUP BY группирует результаты запроса по какому-либо признаку, например id:

некий_сайт/index.php?id=38 GROUP BY 5.

Если ошибок не было получено, значит, полей больше, чем 5. Таким образом, подставляя варианты из довольно обширного диапазона, можно вычислить, сколько же их на самом деле.

Программные комплексы для поиска SQL-уязвимостей

Такие программы обычно имеют две составляющих — сканирование сайта на возможные уязвимости и их использование для получения доступа к данным. Существуют такие утилиты практически для всех известных платформ. Их функционал в значительной мере облегчает проверку сайта на возможность взлома SQL-инъекцией. Рассмотрим некоторые примеры таких программ:

jSQL Injection

jSQL Injection — кроссплатформенный инструмент для тестирования использования SQL уязвимостей. Написан на Java, поэтому в системе должен быть установлен JRE. Способен обрабатывать запросы GET, POST, header, cookie. Обладает удобным графическим интерфейсом.

Установка данного программного комплекса происходит так:

wget https://github.com/`curl -s https://github.com/ron190/jsql-injection/releases| grep-E -o ‘/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9]{1,2}.[0-9]{1,2}.jar’| head-n 1`

Для того чтобы начать проверку сайта на SQL-уязвимость, нужно ввести его адрес в верхнее поле. Они есть отдельные для GET и для POST. При положительном результате в левом окне появится список доступных таблиц. Их можно просмотреть и узнать некую конфиденциальную информацию.

SQLi Dumper v.7

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

Sqlmap

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

  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev/,
  • ./sqlmap.py –wizard.

Для Windows имеется как вариант с командной строкой, так и с графическим интерфейсом пользователя.

P.S. Данная статья написана в ознакомительных целях для хорошего понимания SQL уязвимостей на своём сайте. Прошу Вас не использовать полученные знания для незаконных действий. Не переходите на тёмную сторону))). Важно помнить, что за несанкционированный доступ к чужому имеется статья Уголовного кодекса.