SQL — инъекция.

В одной из своих статей я Вас немного знакомил с 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 уязвимостей на своём сайте. Прошу Вас не использовать полученные знания для незаконных действий. Не переходите на тёмную сторону))). Важно помнить, что за несанкционированный доступ к чужому имеется статья Уголовного кодекса.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Chinese (Traditional)EnglishJapaneseRussianUkrainian

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: