Что такое SQL-инъекция? Это опасно?
Содержание
Последнее обновление 20.01.2023 — Иван Катанаев
Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать больше.
Если есть что-то, что любят киберпреступники, так это данные. Украденные данные очень ценны на нелегальных рынках, а доступ к частным базам данных может быть отличным способом для злоумышленников получить прибыль от своих предприятий. Один из способов получить доступ к личным данным — это SQL-инъекция. Но что такое SQL-инъекция, как она работает и можно ли предотвратить такую атаку?
Что такое SQL-инъекция?
Программные программы полагаются на код для работы. Код — это также язык, который машины используют для выполнения операций, и он может принимать различные формы (Python, JavaScript, C++ и т. д.). Киберпреступники часто могут атаковать жертв с помощью кода, и SQL-инъекции (или SQLis) ничем не отличаются. Это позволяет злоумышленникам «внедрять» вредоносный код в оператор SQL.
Давайте сначала рассмотрим, что означает SQL.
SQL расшифровывается как язык структурированных запросов. Это еще один тип языка программирования, специально используемый при работе с базами данных. SQL, разработанный IBM в 1970-х годах, позволяет управлять, хранить и извлекать информацию из базы данных. Многие системы связи с базами данных по всему миру используют SQL, поэтому неудивительно, что злоумышленники придумали способы злоупотребления им для нападения на базы данных.
Операторы SQL составляют ключевую часть взаимодействия с базой данных. Оператор SQL — это команда, которая существует во многих различных формах. Некоторые изменяют данные, некоторые извлекают или удаляют их, а некоторые могут изменять структуру самой базы данных. Когда происходит SQL-инъекция, вредоносный код внедряется в инструкцию SQL.
Конечно, веб-сайт или приложение должны использовать язык программирования SQL, чтобы SQL-инъекция была возможной. Но как работает этот вектор атаки?
Допустим, у вас есть обычная строка кода, используемая приложением. Когда киберпреступник вводит вредоносную SQL-инъекцию, добавляется строка кода, которая может мешать запросам, которые само приложение отправляет в свою базу данных. Таким образом, базу данных можно использовать таким образом, чтобы субъект угрозы мог просматривать данные, к которым в противном случае у него не было бы доступа.
Отсюда киберпреступник может украсть данные, чтобы использовать их напрямую или продать в темной сети или где-либо еще. Они также могут изменять, добавлять или удалять данные из целевой базы данных. В зависимости от степени атаки SQL-инъекцией может быть нанесен большой ущерб. При доступе к платежным реквизитам, номерам социального страхования или другим частным данным многие люди могут подвергнуться риску эксплуатации.
С другой стороны, если злоумышленнику удастся значительно изменить базу данных, большие объемы данных могут быть безвозвратно потеряны. В общем, SQL-инъекции могут уничтожить целые базы данных всего за одну атаку. Хотя они существуют с 1998 года, они по-прежнему актуальны и опасны в наши дни.
По данным Open Web Application Security Project (OWASP), при тестировании приложений на наличие такой атаки в 2021 году было выявлено 274 000 случаев SQL-инъекций.
Типы SQL-инъекций
Существует несколько различных видов SQL-инъекций, основными тремя из которых являются слепые, внутриполосные и внеполосные инъекции.
Слепая (или инференциальная) инъекция SQL происходит, когда приложение или сайт атакованы инъекцией, но предоставленные ответы HTTP (протокол передачи гипертекста) не содержат результат SQL-запроса. Другими словами, злоумышленнику не передаются никакие данные из атакуемой базы данных. Итак, какой в этом смысл?
Используя слепую инъекцию SQL, злоумышленник отправляет данные на целевой сервер, а затем может определить определенные сведения о базе данных по характеру самого HTTP-ответа. Кроме того, факторы, связанные с HTTP-ответом, могут помочь злоумышленнику создать еще одну, более эффективную SQL-инъекцию для доступа к базе данных.
Существует два основных типа слепых SQL-инъекций: основанные на времени и логические. Эти два варианта очень похожи по своей природе. Как логическая, так и основанная на времени SQL-инъекция отправляет массив вопросов с ответом «да» или «нет», хотя последний потребует от базы данных немного подождать, прежде чем ответить на запросы.
Далее идут внутриполосные SQL-инъекции. Внутриполосные SQL-инъекции позволяют оператору провести атаку и получить желаемый результат, используя тот же канал. Внутриполосные SQL-инъекции используются чаще всего просто потому, что их проще всего выполнять из-за того, что для них требуется только один канал.
Наконец, у вас есть внеполосная инъекция SQL. По сути, это альтернативная версия внутриполосной инъекции SQL, при которой злоумышленник не может провести атаку в целом, используя один единственный канал. В качестве альтернативы атаке может потребоваться внеплановая инъекция SQL, если целевой сервер просто недостаточно быстр для предоставления результатов.
Эти факторы немного усложняют процесс, а это означает, что он должен полагаться на определенные функции, чтобы быть активными в целевой базе данных для успеха. Например, на атакуемой платформе должна отсутствовать санация ввода. Из-за этого внутриполосные SQL-инъекции гораздо более распространены, чем внеполосные SQL-инъекции. Но они все же случаются.
Можно ли избежать SQL-инъекций?
SQL-инъекции больше беспокоят предприятия и организации, чем обычных людей. Но есть вещи, которые эти потенциальные цели могут сделать, чтобы снизить вероятность поражения такой атакой.
Очистка входных данных — ключевой распространенный метод предотвращения SQL-инъекций. Это процесс фильтрации, который сканирует и очищает ввод от опасных символов. Если код SQL обрабатывается до его очистки, вероятность SQL-инъекций естественным образом возрастает.
Кроме того, параметризованные запросы могут помочь вам избежать SQL-инъекций. Это запросы, для выполнения которых требуется хотя бы один параметр. Применение параметров усложняет киберпреступникам успешную атаку с внедрением SQL-кода.
Но нет надежного способа предотвратить SQL-инъекцию. Как и в случае со многими кибератаками, практически невозможно обеспечить полную герметичность ваших устройств и систем. Когда дело доходит до SQL-инъекций, лучшее, что вы можете сделать, — это очистить все входные данные и установить параметризованные запросы.
SQL-инъекции устарели, но все еще представляют угрозу
Хотя SQL-инъекции существуют уже более 20 лет, они по-прежнему представляют опасность для многих веб-сайтов и приложений. Поэтому рекомендуется помнить об этой форме атаки и предпринимать необходимые шаги, чтобы попытаться предотвратить ее, поскольку в какой-то момент в будущем она может представлять угрозу для ваших баз данных.
SQL и NoSQL инъекции: подробный разбор и анализ
Дата: 08.10.2020. Автор: Игорь Б. Категории: Главное по информационной безопасности, Статьи по информационной безопасностиВ этой статье читатели ближе познакомятся с инъекциями SQL и NoSQL. Они узнают особенности их работы, достоинства и недостатки. Также будет приведен список инструментов, которые помогут усилить защиту любого веб-сайта.
SQLi (SQL Injection) — это старая практика, при которой хакер выполняет вредоносные SQL-выражения, чтобы получить доступ к веб-сайту. Эта атака с высокой степенью опасности. Последний отчет Acunetix говорит о том, что 8% сканируемых систем были уязвимы для нее.
Поскольку база данных SQL (Structured Query Language) поддерживается многими веб-платформами (PHP, WordPress, Joomla, Java), она подходит для атак большого количества веб-сайтов. Таким образом, читатели уже понимают, что очень важно убедиться в том, что их бизнес-сайт в Интернете не уязвим для SQLi.
Примечание: выполнение SQL-инъекции генерирует высокую пропускную способность сети для отправления огромного количества данных. Итак, стоит убедиться, что пользователь является владельцем веб-сайта, который собирается проверить.
1. suIP.biz
Обнаружение уязвимости для SQL-инъекций в режиме онлайн с помощью sup.biz и поддержка баз данных MySQL, Oracle, PostgreSQL, Microsoft SQL, IBM DB2, Firebird, Sybase.
SQLMap поможет протестировать сервис на все 6 методов инъекции.
2. Тест на уязвимость SQL-инъекции онлайн
Еще один онлайн-инструмент Hacker Target на основе SQLMap для поиска уязвимости bind & error против GET-запроса HTTP.
3. Netsparker
Netsparker готов просканировать уровень веб-безопасности предприятий: он делает даже больше, чем просто тест на уязвимость SQL. Человек также может интегрировать приложения для автоматизации веб-безопасности.
Пользователь может проверить индекс уязвимости сайта, который прошел сканирование от Netsparker.
4. Vega
Vega – это сканер безопасности с открытым исходным кодом, который может быть установлен на Linux, OS X и Windows.
Vega написан на Java, он имеет графический интерфейс.
Не только SQLi: Vega можно использовать для тестирования на многие другие типы уязвимостей, такие как:
- Инъекция XML/Shell/URL;
- Directory listing;
- Remote file includes;
- XSS.
Vega выглядит многообещающим бесплатным сканером безопасности сети.
5. SQLMap
SQLMap – это один из популярных инструментов тестирования с открытым исходным кодом на выполнение SQL-инъекций в системе управления реляционными базами данных.
Sqlmap проводит перечисление пользователей, паролей, хэшей, баз данных и поддерживает полный дамп таблиц базы данных.
Если пользователь использует Kali Linux, то он может применить SQLMap, не устанавливая его дополнительно.
6. SQL Injection Scanner
Онлайн сканер для проведения пентестинга, который использует OWASP ZAP. Есть две версии – упрощенная (бесплатная) и полная (нужно зарегистрироваться).
7. Appspider
Appspider, разработанный Rapid7, — это динамическое решение для тестирования безопасности приложений на обход защиты и более чем 95 типов атак.
Уникальная функция Appspider под названием «vulnerability validator» позволяет разработчику воспроизвести уязвимость в режиме реального времени.
Это очень удобно, когда администратор исправил уязвимость и хочет повторно протестировать ресурс, чтобы точно убедиться, что риска для системы больше нет.
8. Acunetix
Acunetix – это готовый к работе сканер уязвимостей веб-приложений, которому доверяют более 4000 компаний по всему миру. Не только сканирование SQLi: инструмент способен найти более 6000 других уязвимостей.
Каждая находка классифицируется, и показываются потенциальные корректировки системы безопасности: поэтому пользователь всегда знает, что нужно сделать, чтобы исправить ситуацию к лучшему. Кроме того, человек может интегрироваться с системой CI/CD и SDLC, поэтому каждый риск безопасности идентифицируется и фиксируется до того, как приложение будет развернуто.
9. Wapiti
Wapiti – это сканер уязвимостей на основе Рython. Он поддерживает большое количество инструментов для обнаружения следующих атак:
- Sql и XPath;
- CRLS и XSS;
- Shellshock;
- File disclosure;
- Server-side request forgery;
- Command execution.
Он поддерживает конечную точку HTTP/HTTPS, несколько типов аутентификации, такие как Basic, Digest, NTLM и Kerberos. У пользователя есть возможность создавать отчеты о сканировании в формате HTML, XML, JSON и TXT.
10. Scant3r
Scant3r – это «легкий сканер», основанный на Python.
Он ищет возможность проведения атак XSS, SQLi, RCE, SSTI в заголовках и параметрах URL-адресов.
Дополнительная информация
Вышеперечисленные инструменты проверят систему безопасности и сообщат, есть ли на сайте уязвимость для SQL-инъекции. Если пользователь до сих пор задается вопросом, как защитить свой сайт от SQL-инъекций, то ему может помочь информация ниже.
Плохо закодированное веб-приложение часто ответственно за уязвимость к SQL-инъекции, поэтому нужно исправить неправильный код. Однако еще одна вещь, которую можно сделать, — это реализовать WAF (межсетевой экран веб-приложения).
Существует два возможных способа интеграции WAF с приложением:
- Интеграция WAF в веб-сервер: пользователь может использовать WAF, как ModSecurity с Nginx, Apache или WebKnight с IIS. Это возможно, если человек размещает свой сайт самостоятельно, например, в Cloud/VPS. Однако если пользователь пользуется общим хостингом, то этот вариант не подходит.
- Использование облачного WAF: вероятно, самый простой способ усилить защиту сайта — это реализовать межсетевой экран сайта. Хорошо то, что этот метод подходит для любого ресурса, и облако можно запустить в работу уже через 10 минут.
Если читателям интересно узнать больше о SQL-инъекциях, они могут перейти по следующим ссылкам:
- Cheatsheet;
- Основы.
NoSQL
NoSQL не является чем-то новым; она был впервые представлена в 1998 году Carlo Strozzi. Но в последнее время NoSQL приобрела популярность при ее использовании в современных приложениях. А почему бы и нет. Она быстрая и решает некоторые традиционные проблемы с реляционными базами данных. Существуют различия между SQL и NoSQL.
Если пользователь использует базу данных NoSQL, такую как MongoDB, и не уверен, что она достаточно хороша (не находит все уязвимости, не видит неправильную конфигурацию), инструменты, представленные ниже, помогут ему исправить эту ситуацию.
NoSQL Map
NoSQLMap — это утилита с открытым исходным кодом, основанная на Python. Она способна проводить аудит для поиска неправильной конфигурации и автоматизации инъекционных атак. На данный момент инструмент поддерживает следующие базы данных:
- MongoDB
- CouchDB
- Redis
- Cassandra
Для установки NoSQLMap понадобится Python, который можно установить ниже с помощью специальной команды на Ubuntu:
apt-get install python apt-get install python-setuptools
После установки Python следует выполнить следующие действия для установки NoSQL MAP:
git clone https://github. com/codingo/NoSQLMap.git python setup.py install
Как только это будет сделано, пользователь может открыть ./nosqlmap.py из клонированного каталога GIT, как показано ниже:
_ _ ___ ___ _ __ __ | \| |___/ __|/ _ \| | | \/ |__ _ _ __ | .` / _ \__ \ (_) | |__| |\/| / _` | '_ \ |_|\_\___/___/\__\_\____|_| |_\__,_| .__/ v0.7 [email protected] |_| 1-Set options 2-NoSQL DB Access Attacks 3-NoSQL Web App attacks 4-Scan for Anonymous MongoDB Access 5-Change Platform (Current: MongoDB) x-Exit Select an option:
Нужно выбрать цель перед тестированием. Для этого надо ознакомиться с приведенным ниже демо-туториалом.
Mongoaudit
Как можно догадаться по названию, инструмент подходит для MongoDB. Mongoaudit хорош для выполнения пентестинга, чтобы найти ошибку, определить неправильную конфигурацию или потенциальные риски. Он работает вместе со многими практиками, включая такие как:
- На порту по умолчанию включен интерфейс HTTP;
- Защита с помощью протокола TLS;
- Метод аутентификации;
- Операции CRUD.
Установка Mongoaudit очень проста. Пользователь может использовать следующую команду:
pip install mongoaudit
После установки следует выполнить команду mongoaudit для запуска сканирования. Человеку будет предложено выбрать уровень сканирования и ввести данные о листенере MongoDB.
Какой бы инструмент пользователь не использовал для проверки безопасности баз данных NoSQL, не стоит забывать об ответственности за свои действия. Нужно убедиться, что человек работает со своим собственным экземпляром базы данных или авторизован для проведения теста.
Автор переведенной статьи: Chandan Kumar.
SQL Injection Scanner Online
Что такое SQL-инъекция и как предотвратить эту атаку?
SQL-инъекция остается одной из наиболее распространенных атак, используемых хакерами, и серьезной угрозой безопасности как для отдельных лиц, так и для компаний.
SQLi также является одной из самых известных уязвимостей веб-приложений, о которой выделена отдельная глава в проекте OWASP Top 10, а также это уязвимость, которую часто преследуют в программах вознаграждения за обнаружение ошибок.
Распространенная атака с внедрением SQL происходит, когда злоумышленники пытаются вставить вредоносные операторы SQL, расположенные в запросе HTTP (или HTTPS), путем изменения текущего поведения операторов SQL, созданных веб-приложением.
Они делают это, сначала находя уязвимый пользовательский ввод в веб-приложении и создавая входной контент, который часто используется в качестве вредоносной полезной нагрузки для запуска этой атаки. Входные данные, предоставленные злоумышленником, могут включать символы, которые могут мешать синтаксису SQL и приведут к выполнению произвольных запросов SQL к базе данных.
В результате риск уязвимости SQL Injection заключается в том, что злоумышленник может:
- Читать/записывать информацию из базы данных
- Чтение/запись файлов с диска (при определенных условиях)
- Выполнение команд операционной системы на сервере базы данных (при определенных условиях)
Вот пример URL-адреса, который извлекает тип и версию сервера базы данных (MySQL) путем использования уязвимости внедрения SQL: http://vulnapp. example.com/travel.jsp?id=x' UNION SELECT NULL, NULL, @@version -- '
Один из наиболее распространенных типов внедрения SQL Методы — это SQL-инъекция на основе ошибок, которая является простейшим эксплойтом SQL и легко обнаруживается. Он включает в себя использование классических HTTP-запросов путем вставки неожиданных команд через пользовательский интерфейс, чтобы заставить сервер базы данных ответить ошибкой, которая включает информацию о цели: структуре, версии или операционной системе.
В приведенном ниже примере была вставлена команда SQL для изменения значения полей Имя пользователя ($username = 1' или '1' = '1)
и Пароль ($password = 1' или '1' = '1)
, который будет изменен следующим образом:
- Имя пользователя
(($username = 1' или '1' = '1') LIMIT 1/*)
- Пароль
($password = foo)
Это пример URL-адреса с измененным запросом, который вызовет ошибку и позволит злоумышленнику получить доступ ко всем именам пользователей и паролям. http://www.example.com/index.php?username=1'%20or%20'1'%20=%20'1'))%20LIMIT%201/*&password=foo
Для предотвращения чтобы этого не произошло, вам следует избегать использования пользовательского ввода непосредственно в коде приложения. Разработчикам необходимо очистить раздел ввода и удалить потенциально вредоносный код в операторах SQL, который может позволить злоумышленникам получить несанкционированный доступ к конфиденциальной информации базы данных: именам пользователей, паролям и другим важным учетным данным.
Профилактика всегда является лучшим средством, и вы можете легко обнаружить уязвимости веб-приложений с помощью нашего онлайн-сканера.
Как работает сканер SQL?
Чтобы лучше защитить свои веб-приложения от атак путем внедрения кода SQL, необходимо выявить и устранить уязвимости в системе безопасности до того, как это сделают злоумышленники.
Мы создали этот сканер SQL-инъекций, чтобы вы могли легко выполнять тестирование SQL-инъекций и намного быстрее находить недостатки веб-приложений.
Сканер SQL-инъекций — это комплексный онлайн-инструмент для тестирования безопасности, предназначенный для специалистов по информационной безопасности. Это поможет вам выполнить полную оценку SQL-инъекций ваших целевых веб-приложений и найти критические уязвимости со значительным влиянием на бизнес.
Онлайн-инструмент имеет интуитивно понятный и простой интерфейс.
Сканер SQL-инъекций (легкое сканирование) выполняет быстрое и быстрое сканирование целевого URL-адреса, что позволяет ему выявлять уязвимости в веб-приложениях. Он делает это, проверяя, уязвимы ли параметры целевых URL-адресов для SQL-инъекций, а затем сообщает о вредоносных страницах, которые могут повлиять на целевой веб-сайт.
Онлайн-сканер включает в себя два этапа:
- Поиск цели : На этом первом этапе сканер пытается идентифицировать все страницы в целевом веб-приложении, включая вводимые параметры в формах входа, URL-адреса, заголовки и т. д.
- Точное тестирование внедрения SQL : На этом этапе для каждой страницы обнаруженный на предыдущем шаге, онлайн-инструмент попытается определить, уязвимы ли параметры для SQL-инъекций, и сообщит об этом на странице результатов.
В таблице ниже показаны различия между Облегченным сканированием и Полным сканированием:
Возможности сканера | Облегченное сканирование | Полное сканирование |
---|---|---|
Максимальное количество URL-адресов Spider | 20 | 500 |
Максимальная продолжительность паука | 1 минута | 15 минут |
Активный максимальная продолжительность сканирования | 2 минуты | 30 минут |
Предупреждение . Инструмент SQL Injection генерирует некоторые HTTP-запросы, которые можно пометить как атаки на стороне сервера (хотя они и безвредны). Мы рекомендуем не выполнять тест внедрения SQL, если у вас нет разрешения или надлежащей авторизации от владельца целевого веб-приложения.
Будет ли этот инструмент также проверять MySQL Injection?
MySQL — одна из самых доступных и широко используемых баз данных SQL, работающих на веб-сайтах и в системах, а также главная цель для злоумышленников. Они будут искать уязвимые пользовательские данные в базах данных MSQL, внедрять вредоносный код, чтобы манипулировать ими и получать несанкционированный доступ.
Наш онлайн-инструмент сканирует целевой URL-адрес, содержащий команды SQL, и проверяет, не подвергалась ли база данных MySQL какой-либо уязвимости SQL-инъекций. Он может выполнить полную оценку SQL-инъекций целевого веб-приложения, чтобы обнаружить уязвимости, которые необходимо устранить, прежде чем они будут скомпрометированы.
Другими популярными системами управления реляционными базами данных (RDBMS), уязвимыми для внедрения SQL, являются Microsoft SQL Server, Oracle или SQLite.
Параметры
Параметр | Описание |
---|---|
Целевой URL-адрес | Это URL-адрес веб-сайта, который будет просканирован . Все URL-адреса должны начинаться с http или https . |
Облегченное сканирование | Это сканирование выполняется быстрее, но менее полно, чем полное сканирование. |
Полное сканирование | Это полная оценка SQL Injection целевого веб-приложения. |
Как это работает
Инструмент может выполнять тест внедрения SQL путем вставки специальных символов (например, '
, "
, 2*3
) во все поля ввода целевого приложения и мониторинга поведение веб-страницы. Если он находит ошибки базы данных на веб-сайте, это указывает на потенциальный сценарий атаки SQL Injection.
Чтобы проверить найденную уязвимость, сканер SQL-инъекций пытается создать синтаксически правильный SQL-запрос, демонстрирующий, что инъекция прошла успешно. Вот почему будут отображаться следующие результаты: http://vulnapp.example.com/bookings.php?cat=4 AND 1=1 --
Сканер SQL Injection не пытается использовать SQL Injection, он просто обнаруживает наличие любой уязвимости, которая может повлиять на вашу серверную базу данных. При обнаружении недостатков наш онлайн-инструмент предлагает подробную информацию о рисках, которым вы подвергаетесь, и рекомендации по эффективному процессу исправления. Начните сканировать веб-приложения на наличие уязвимостей уже сегодня, чтобы избежать атак SQL-инъекций, которые позволяют злоумышленникам вмешиваться в конфиденциальную информацию (например, имена пользователей, пароли и другие важные учетные данные), раскрывая, удаляя или сохраняя ее для выкупа.
Для получения более подробной информации об атаках с использованием SQL-инъекций, в том числе о том, как устранить уязвимости, которые делают их возможными, посетите страницу OWASP SQL-инъекций.
SQL-инъекция
SQL-инъекция
Выход
Для работы этого сайта требуется JavaScript!
Внедрение SQL
Если вы уязвимы для внедрения SQL, злоумышленники могут запускать произвольные команды в вашей базе данных.
Готовы увидеть, как?
Фух. Теперь мы знаем, как SQL-инъекция работает, давайте научимся защищаться от такого рода атак.
Это уязвимое приложение, которое мы будем пытаться взломать с помощью SQL-инъекции атака. Попробуйте войти со следующими учетными данными:Электронная почта
Пароль
пароль
Итак, угадать пароль не получилось. Давайте попробуем добавить символ кавычки после пароля:Электронная почта
Пароль
пароль’
Хммм. Сбой приложения из-за непредвиденной ошибки. Что это может означать? Введите пароль password’ и посмотрите окно кода.Введите следующие учетные данные и нажмите «Войти»:
Электронная почта
Пароль
‘ или 1=1—
И мы в деле! Мы успешно получили доступ к приложению, не имея угадать пароль, используя SQL инъекции.