SQL-инъекции для самых маленьких / Хабр
Мы переходим к технической части статей про тестирование на проникновение. И начнем как всегда с внешнего пути – с эксплуатации веб уязвимостей. И стартанем мы с SQL – инъекций.
SQL-инъекция (SQLi) — это уязвимость веб-безопасности, которая позволяет злоумышленнику вмешиваться в запросы, которые приложение делает к своей базе данных. Как правило, это позволяет просматривать данные, которые он обычно не может получить. Это могут быть других пользователей, или любые другие данные, доступ к которым имеет само приложение. Во многих случаях злоумышленник может изменять или удалять эти данные, вызывая постоянные изменения в содержимом или поведении приложения.
В некоторых ситуациях злоумышленник может усилить атаку SQL-инъекции, чтобы скомпрометировать базовый сервер или другую внутреннюю инфраструктуру, или осуществить атаку типа «отказ в обслуживании».
Каковы последствия успешной атаки SQL-инъекции?
Успешная атака SQL-инъекции может привести к несанкционированному доступу к конфиденциальным данным, таким как пароли, данные кредитных карт или личная информация пользователей.
Многие громкие утечки данных в последние годы стали результатом атак с использованием SQL-инъекций, что привело к ухудшению репутации и штрафам со стороны регулирующих органов. В некоторых случаях злоумышленник может получить постоянный черный ход в системы организации, что приводит к долгосрочной угрозе, которая может оставаться незамеченной в течение длительного периода времени.
Примеры SQL-инъекций
Существует широкий спектр уязвимостей, атак и методов SQL-инъекций, которые возникают в различных ситуациях. Некоторые распространенные примеры инъекций SQL включают:
Получение скрытых данных, когда вы можете изменить SQL-запрос, чтобы вернуть дополнительные результаты.
Подрыв логики приложения, когда можно изменить запрос, чтобы вмешаться в логику приложения.
Атаки UNION, когда можно получить данные из разных таблиц базы данных.
Изучение базы данных, когда можно получить информацию о версии и структуре базы данных.
Слепая SQL-инъекция, когда результаты контролируемого вами запроса не возвращаются в ответах приложения.

Извлечение скрытых данных
Рассмотрим приложение для покупок, которое отображает товары в различных категориях. Когда пользователь нажимает на категорию «Подарки», его браузер запрашивает URL-адрес:
https://uhahatbltv.com/?category=Gifts
Это заставляет приложение выполнить SQL-запрос для получения информации о соответствующих товарах из базы данных:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1
Этот SQL-запрос просит базу данных вернуть:
все данные (*) из таблицы продуктов где категория — «Подаркии» released = 1.
Ограничение released = 1 используется для скрытия продуктов, которые не выпущены. Для невыпущенных продуктов, предположительно, released = 0.
В приложении не реализована защита от атак SQL-инъекций, поэтому злоумышленник может построить атаку типа:
https://uhahatbltv.com/products?category=Gifts'--.
В результате получится SQL-запрос:
SELECT * FROM products WHERE category = 'Gifts'--' AND released = 1
Ключевым моментом здесь является то, что последовательность двойных тире — является индикатором комментария в SQL и означает, что остальная часть запроса интерпретируется как комментарий.
Это эффективно удаляет остаток запроса, так что он больше не включает AND released = 1. Это означает, что отображаются все продукты, включая еще не выпущенные.
Если пойти дальше, злоумышленник может заставить приложение отобразить все продукты в любой категории, включая категории, о которых он не знает:
https://uhahatbltv.com/products?category=Gifts'+OR+1=1--.
В результате получается SQL-запрос:
SELECT * FROM products WHERE category = 'Gifts' OR 1=1--' AND released = 1
Модифицированный запрос вернет все товары, где
либо категория — Gifts, либо 1 равна 1. Поскольку 1=1 всегда истинно, запрос
вернет все товары.
Подрыв логики приложения
Рассмотрим приложение, которое позволяет пользователям входить в систему с помощью имени пользователя и пароля. Если пользователь вводит имя пользователя wiener и пароль bluecheese, приложение проверяет учетные данные, выполняя следующий SQL-запрос:
SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese'
Если запрос возвращает данные пользователя, то вход в систему будет успешным.
В противном случае он будет отклонен.
Здесь злоумышленник может войти в систему как любой пользователь без пароля, просто используя последовательность комментариев SQL — для удаления проверки пароля из пункта WHERE запроса. Например, если ввести имя пользователя administrator’— и пустой пароль, то получится следующий запрос:
SELECT * FROM users WHERE username = 'administrator'--' AND password = ''
Этот запрос возвращает пользователя, чье имя пользователя — administrator, и успешно регистрирует атакующего как этого пользователя.
Получение данных из других таблиц базы данных
В случаях, когда результаты SQL-запроса возвращаются в ответах приложения, злоумышленник может использовать уязвимость SQL-инъекции для получения данных из других таблиц базы данных. Для этого используется ключевое слово UNION, которое позволяет выполнить дополнительный запрос SELECT и добавить его результаты к исходному запросу.
Например, если приложение выполняет следующий запрос, содержащий пользовательский ввод «Gifts»:
SELECT name, description FROM products WHERE category = 'Gifts'
то злоумышленник может отправить ввод:
' UNION SELECT username, password FROM users--.
Это заставит приложение вернуть все имена пользователей и пароли вместе с названиями и описаниями товаров.
Изучение базы данных, ну или определение версии и т. д.
После первоначальной идентификации уязвимости SQL-инъекции обычно полезно получить некоторую информацию о самой базе данных. Эта информация часто может проложить путь для дальнейшей эксплуатации.
Вы можете запросить информацию о версии базы данных. Способ, которым это делается, зависит от типа базы данных, поэтому вы можете определить тип базы данных по тому, какая техника работает. Например, в Oracle вы можете выполнить:
SELECT * FROM v$version
Вы также можете определить, какие таблицы базы данных существуют, и какие столбцы они содержат. Например, для большинства баз данных вы можете выполнить следующий запрос, чтобы получить список таблиц:
SELECT * FROM information_schema.tables
Слепые уязвимости SQL-инъекции
Многие случаи SQL-инъекций являются слепыми уязвимостями.
Это означает, что приложение не возвращает результаты SQL-запроса или сведения об ошибках базы данных в своих ответах. Слепые уязвимости все еще могут быть использованы для несанкционированного доступа к данным, но соответствующие техники обычно более сложны и трудновыполнимы.
В зависимости от характера уязвимости и используемой базы данных, для эксплуатации слепых уязвимостей SQL-инъекций можно использовать следующие техники:
Можно изменить логику запроса, чтобы вызвать заметную разницу в реакции приложения в зависимости от истинности одного условия. Это может включать в себя введение нового условия в некоторую булеву логику или условное срабатывание ошибки, такой как деление на ноль.
Можно условно вызвать временную задержку в обработке запроса, что позволяет сделать вывод об истинности условия на основе времени, которое требуется приложению для ответа.
Можно вызвать внеполосное сетевое взаимодействие, используя технику OAST. Эта техника является чрезвычайно мощной и работает в ситуациях, когда другие техники не работают.
Часто вы можете напрямую передать данные по внеполосному каналу, например, поместив данные в DNS-поиск для домена, который вы контролируете.
В следующих статьях мы подробно разберем каждый вид SQL –инъекции.
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.
Таким образом, подставляя варианты из довольно обширного диапазона, можно вычислить, сколько же их на самом деле.Программные комплексы для поиска 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 уязвимостей на своём сайте. Прошу Вас не использовать полученные знания для незаконных действий. Не переходите на тёмную сторону))). Важно помнить, что за несанкционированный доступ к чужому имеется статья Уголовного кодекса.
- Виктор Черемных
- 5 мая, 2018
- 2 Comments
Группа в VK
Обнаружили опечатку?
Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!
Свежие статьи
Облако меток
Instagram Vk Youtube Telegram OdnoklassnikiПолезно знать
Рубрики
Авторы
Лучшая SQL-инъекция | Топ-5 лучших инструментов SQL-инъекций с открытым исходным кодом 2023
Лучшие инструменты SQL-инъекций с открытым исходным кодом
Когда кто-то выполняет атаку SQL-инъекций, он получает доступ к информации о вашей кредитной карте, паролям и личным данным.
Злоумышленники часто используют лучших инструментов SQL-инъекций для успешного сбора данных, разработки правильной полезной нагрузки и изучения различных типов методов SQL-инъекций .
Вот общие инструменты, используемые для этой торговли.
5 Лучшие инструменты SQL-инъекций
BSQL Hacker
При выполнении SQL-инъекций этот инструмент BSQL автоматически перекачивает информацию из базы данных и выполняет ряд атак против веб-приложений. Он поставляется с поддержкой консоли и графическим интерфейсом для сохранения атакованных данных, а также поддерживает множество точек внедрения, которые включают заголовки HTTP, строки запросов и файлы cookie.
Используя аутентификацию по умолчанию, вы можете войти в веб-учетную запись и выполнить ряд заданных атак с этой точки. Имея возможность доступа как к защищенным, так и к недействительным URL-адресам, BSQL может выполнять 9 операций.0005 различные типы атак с внедрением SQL , в том числе:
- слепое внедрение SQL
- Слепое внедрение SQL на основе времени
- Глубокая слепая инъекция SQL
- Внедрение ошибки SQL
Поддерживая множество серверов, таких как MSSQL, MySQL и ORACLE, это идеальное средство для проникновения в базы данных.
White Widow
Среди инструментов сканирования уязвимостей белая вдова считается одним из лучших инструментов для использования уязвимостей и проникновения в базы данных. Пен-тестеры и сотрудники службы безопасности, в частности, находят этот инструмент интересным из-за его способности обнаруживать потенциально уязвимые веб-сайты в Google.
Отправляя тысячи SQL-запросов в Google, это программное обеспечение с открытым исходным кодом может отслеживать слабые места в веб-приложении и серверах, которые впоследствии можно использовать вручную. Разработанный на языке программирования ruby, он зависит от chanize, nokogiri, rest-client, веб-мока и rspec для эффективной работы.
SQLmap
Обладая, пожалуй, самым мощным детектором движка, это программное обеспечение с открытым исходным кодом отлично подходит для отслеживания уязвимостей веб-приложений, использования этих уязвимостей и использования их для запуска атаки с целью захвата сервера базы данных.
Он поддерживает серверы баз данных, такие как ORACLE, PostgreSQL, IBM DB2, SQLite, Firebird и Sybase, и может выполнять множество атак, в том числе; Логические слепые, основанные на ошибках, основанные на времени, основанные на запросах UNION и внеполосные методы SQL.
Имея встроенную систему распознавания хэшей паролей, он может идентифицировать пароли и взламывать их с помощью атаки по словарю. Оказавшись внутри, злоумышленник может искать определенные таблицы, столбцы и имена баз данных, а также использовать SQLmap для отправки подсказок, включая получение вывода с сервера базы данных.
Полная атака путем внедрения SQLmap включает:
- Разведку
- Сканирование
- Эксплойт
- Сохранение доступа
- Покрытие дорожек
SQLSus
Как средство SQL-инъекции с открытым исходным кодом для сервера базы данных MySQL, SQLSus позволяет вам выполнять последовательность команд, таких как внедрение SQL-запросов и атаки путем внедрения SQL-кода.
С помощью этого инструмента вы можете вводить свои собственные коды, получать доступ к мощному алгоритму интеллектуального анализа данных и клонировать базу данных.
Как и большинство инструментов, он поддерживает HTTPS, файлы cookie, прокси-сервер socks и двоичное извлечение данных. Серии атак, запущенных SQLSus, организованы в многопоточность для многочисленных атак. Эти атаки происходят через GET и POST.
SQL-инжектор Safe3
Благодаря возможности получения удаленного доступа к серверам баз данных, SQL-инжектор safe3 может сеять хаос, используя уязвимости веб-сервера. Сначала он распознает тип инъекции, а затем формулирует способ ее использования.
Благодаря поддержке серверов баз данных, таких как ORACLE, MySQL и MS SQL, он запускает серию инъекций через POST, GET и файлы cookie, которые в случае успеха позволят вам взять на себя управление и получить необходимые выходные данные в автоматизированная мода.
Особенности SQL-инжектора safe3 :
- Поддержка всех методов SQL-инъекций
- Мощный ИИ, который легко распознает недостатки
- Поддержка веб-пути и запроса IP-домена
Риски, связанные с наилучшей SQL-инъекцией
Хотя SQL является белой техникой получения доступа к серверам веб-приложений, риск огромен.
Удаление системных данных
Выполнение SQL-инъекции всегда сопряжено с риском потери большого количества конфиденциальных данных в процессе. Даже лучшие хакеры никогда не знают, как системный сервер может отреагировать на взлом.
Изменение конфиденциальных данных
Хотя у вас могут быть самые лучшие намерения, внедрение SQL может раскрыть конфиденциальную информацию, такую как пароли, данные кредитной карты или личную информацию, для внешних злоумышленников. С такими важными деталями эти люди могут причинить вам вред.
Заключительные мысли о лучших SQL-инжекторах
Лучшие инструменты SQL-инъекций обеспечивают плавный и простой процесс выявления уязвимостей, использования этих уязвимостей и получения произвольного управления веб-серверами. Использование таких инструментов, как BSQL hacker, white widow и SQLSus, поможет вам успешно проникнуть на любой сервер веб-приложений.
Помните о связанных с этим рисках, последствия почти всегда необратимы.
Защитите мой сайт
DDoS-атака
Сканирование вредоносных программ WordPress
Что такое SQL-инъекция Как это работает?
Атака с внедрением SQL – это вставка или внедрение SQL-запроса через входные данные от клиента к приложению. Команды SQL вводятся во входные данные плоскости данных, которые влияют на выполнение предопределенных команд SQL. Успешный эксплойт SQL-инъекции может считывать конфиденциальные данные из базы данных, изменять данные базы данных (а именно, вставлять, обновлять или удалять), выполнять административные операции в базе данных, восстанавливать содержимое файла, присутствующего в системе управления базой данных, и даже в некоторых случаях отдавать команды операционной системе.
Если веб-приложение или веб-сайт используют базы данных SQL, такие как Oracle, SQL Server или MySQL, оно уязвимо для атаки с внедрением SQL. Хакеры используют атаки с внедрением SQL для доступа к конфиденциальной деловой или личной информации (PII), что в конечном итоге увеличивает уязвимость конфиденциальных данных.
Атаки с внедрением кода SQL являются одной из самых распространенных среди 10 основных уязвимостей OWASP и одной из самых старых уязвимостей приложений. В одном недавнем отчете она указана как третья по распространенности серьезная уязвимость.
Почему злоумышленники выполняют атаку с внедрением кода SQL?
Чтобы выполнить атаку с внедрением кода SQL, злоумышленник должен найти уязвимый вход в веб-приложении или на веб-странице. Когда приложение или веб-страница содержат уязвимость внедрения SQL, они напрямую используют вводимые пользователем данные в виде SQL-запроса. Хакер может выполнить специально созданную команду SQL как злонамеренное кибервторжение. Затем, используя вредоносный код, хакер может получить ответ, который дает четкое представление о построении базы данных и, таким образом, доступ ко всей информации в базе данных.
SQL служит для связи с базой данных. Операторы SQL используются для извлечения и обновления данных в базе данных. Злоумышленники используют вредоносные операторы SQL в поле ввода, и в ответ база данных предоставляет конфиденциальную информацию.
Этот эксплойт безопасности направлен на получение доступа к несанкционированным данным веб-сайта или приложения. Некоторые веб-сайты и веб-приложения хранят данные в базах данных SQL. Для любого из этих приложений становится необходимым провести тестирование на уязвимости, чтобы убедиться в отсутствии лазеек для выполнения SQL-инъекций.
Какие риски связаны с внедрением SQL?
При атаке с внедрением SQL приложение интерпретирует данные, отправленные киберпреступником, как команду и отвечает конфиденциальными данными. SQL-инъекция может привести к ряду рисков, которые могут представлять серьезную угрозу для организации. Ниже приведены некоторые из сценариев:
- Злоумышленник-хакер выполняет SQL-инъекцию для удаления данных или таблиц из базы данных. В этом случае, даже при наличии резервных копий базы данных, удаление данных может повлиять на доступность приложения до тех пор, пока базу данных не удастся восстановить. Кроме того, резервные копии могут не включать последние данные.

- Злоумышленники используют внедрение SQL для изменения или обновления данных в базе данных и добавления дополнительных данных. Например, в случае финансового приложения злоумышленник может использовать SQL-инъекцию для изменения баланса счета. Хуже того, злоумышленники могут получить административные права на базу данных приложения.
- Наиболее распространенный риск атаки с внедрением SQL – это кража пользовательских данных. Адреса электронной почты, учетные данные для входа и личную информацию (PII) могут быть украдены и проданы в даркнете. Поэтому успешная SQL-инъекция представляет угрозу не только для организации, но и для ее пользователей.
Даже спустя 20 лет после обнаружения SQL-инъекций они остаются одной из главных проблем, когда речь идет об утечке данных и безопасности данных. На самом деле, недавний анализ тенденций атак показывает, что число атак с внедрением кода SQL выросло на 47%.
Как осуществляется атака с внедрением кода SQL
Внедрение кода SQL выполняется с помощью структурированного запроса, вызывающего желаемый ответ.
Ответ необходим злоумышленнику, чтобы понять архитектуру базы данных и получить доступ к защищенной информации приложения. Злоумышленник может выполнить SQL-инъекцию следующими способами:
Оператор SQL, который всегда верен
Хакер выполняет инъекцию SQL с оператором SQL, который всегда верен. Например, 1=1; вместо того, чтобы просто ввести «неправильный» ввод, хакер использует утверждение, которое всегда будет верным.
Если ввести «100 OR 1=1» в поле ввода запроса, будет возвращен ответ с подробностями таблицы.
«ИЛИ «»=»
Этот подход с внедрением SQL аналогичен описанному выше. Злоумышленник должен ввести «ИЛИ «»=» в поле ввода запроса. Эти два признака служат вредоносным кодом для взлома приложения. Рассмотрим следующий пример. Злоумышленник пытается получить пользовательские данные из приложения и может просто ввести «ИЛИ=» в идентификаторе пользователя или пароле. Поскольку этот оператор SQL действителен и верен, он вернет данные пользовательской таблицы в базе данных.
Пакетная инъекция SQL
Пакетная инъекция SQL включает набор операторов SQL, разделенных точкой с запятой. Единственное, что может сделать этот подход успешным, — это если операторы SQL верны и действительны, то есть оператор после точки с запятой должен быть истинным. Например, если хакер вводит «105; DROP TABLE Supplier», оператор SQL после точки с запятой удалит таблицу поставщиков из базы данных приложения.
Некоторые из наиболее распространенных запросов SQL-инъекций включены в следующий раздел.
Типы SQL-инъекций
SQL-инъекции можно разделить на три категории: внутренние, логические и внеполосные.
Внутриполосная инъекция SQL
Внутриполосная инъекция SQL — наиболее частая и широко используемая атака с внедрением SQL. Передача данных, используемых во внутриполосных атаках, может осуществляться либо через сообщения об ошибках в Интернете, либо с помощью оператора UNION в операторах SQL. Существует два типа внутриполосных внедрений SQL: внедрение SQL на основе объединения и внедрение SQL на основе ошибок.
- SQL-инъекция на основе объединения. Когда приложение уязвимо для SQL-инъекций и ответы приложения возвращают результаты запроса, злоумышленники используют ключевое слово UNION для извлечения данных из других таблиц базы данных приложения.
- SQL-инъекция на основе ошибки. Метод внедрения SQL на основе ошибок основан на сообщениях об ошибках, выдаваемых серверами баз данных приложений. Здесь злоумышленники используют информацию сообщения об ошибке для определения объектов базы данных.
Инференциальная инъекция SQL
Инференциальная инъекция SQL также известна как слепая атака с инъекцией SQL. При атаке со слепым внедрением SQL после отправки полезной нагрузки злоумышленник наблюдает за поведением и ответами, чтобы определить структуру данных базы данных.
Существует два типа слепых или инференциальных атак путем внедрения кода SQL: логические и основанные на времени.
- На основе логических значений. Метод, основанный на логических значениях, отправляет SQL-запросы в базу данных, чтобы заставить приложение возвращать логический результат, то есть результат TRUE или FALSE.
Злоумышленники вслепую выполняют различные запросы, чтобы определить уязвимость. - По времени. Атака с внедрением SQL-кода на основе времени часто используется, когда приложение возвращает общие сообщения об ошибках. Этот метод заставляет базу данных ждать определенное время. Время отклика помогает злоумышленнику идентифицировать возврат запроса как TRUE или FALSE.
Внеполосная инъекция SQL
Атака с внеполосной инъекцией SQL требует, чтобы приложение передало данные по любому протоколу — HTTP, DNS или SMB. Для выполнения этого типа атаки могут использоваться следующие функции на базах данных Microsoft SQL и MySQL соответственно:
- MS SQL: master..xp _dirtree
- MySQL: LOAD_FILE()
Памятка по SQL-инъекциям
Организациям необходимо составить памятку по SQL-инъекциям, чтобы обеспечить эффективное предотвращение атак с помощью SQL-инъекций. Эффективное обнаружение и исправление уязвимостей во время разработки приложений является важнейшим звеном в предотвращении атак путем внедрения кода SQL.
Для этого требуется комплексный подход к безопасности приложений, который смещает тестирование безопасности влево, что требует значительно меньше времени и средств на исправление, и встраивает безопасность в программное обеспечение с помощью инструментов. Последний создает непрерывное тестирование безопасности в режиме реального времени в отличие от устаревших подходов к сканированию безопасности приложений, которые являются моментальными и производят большое количество ложных срабатываний.
Защита разрабатываемых приложений — это только одна часть уравнения SQL-инъекции. После запуска кода в производство требуется такой же непрерывный и точный подход к обеспечению безопасности приложений. Исторически организации полагались на решения для защиты периметра, такие как брандмауэры веб-приложений (WAF). Однако они используют подход «снаружи внутрь» и полагаются на сигнатурные механизмы. Результатом является высокая степень неточности — ложноположительные результаты, на которые уходит драгоценное время на сортировку и диагностику, и пропущенные атаки (ложноотрицательные результаты), сопряженные со значительным риском.
Вместо этого, в качестве замены или дополнения к WAF, организации обращаются к решениям для самозащиты приложений во время выполнения (RASP), которые встраивают безопасность в программное обеспечение с помощью инструментов. Решения RASP очень точны, тем самым практически исключая ложные срабатывания, обнаруживают атаки на уязвимости и блокируют их до того, как они смогут выполнить успешный эксплойт.
В дополнение к вышеперечисленному есть несколько других методов обеспечения безопасности, которые организации могут использовать как часть своего шпаргалка по SQL-инъекциям:
- Параметризованные запросы. Параметризованный запрос — это запрос, в котором параметры используются в качестве заполнителей и предоставляются во время выполнения. В этом типе запроса типы данных параметров предопределены, а в некоторых случаях также установлены значения по умолчанию. Это приводит к сбою запросов SQL-инъекций.
- Хранимые процедуры. Хранимые процедуры — это операторы SQL, определенные и хранящиеся в базе данных, которые вызываются из приложения.

