Sql инъекция это: SQL-инъекция и как ее предотвратить

SQL-инъекция и как ее предотвратить

Атаки с SQL-инъекцией основаны на одном из старейших классов уязвимостей в веб-приложениях. Они известны ИБ-экспертам с конца 90-х годов, но все еще остаются актуальными. В этой статье мы расскажем, что эти атаки собой представляют, как они работают и как их можно предотвратить.

SQL-инъекция – определение и описание

SQL-инъекция или SQLi – уязвимость, которая позволяет атакующему использовать фрагмент вредоносного кода на языке структурированных запросов (SQL) для манипулирования базой данных и получения доступа к потенциально ценной информации. Атаки на основе таких уязвимостей – одни из самых распространенных и опасных: они могут быть нацелены на любое веб-приложение или веб-сайт, которые взаимодействуют с базой данных SQL (а подавляющее большинство баз данных реализованы именно на SQL).

org/1999/xhtml»>Как происходят атаки на основе SQL-инъекции?

Чтобы понять принцип действия SQL-инъекции, сначала стоит разобраться, что представляет собой язык SQL. SQL – это язык построения запросов, который применяется в программировании для чтения, изменения и удаления информации, хранящейся в реляционных базах данных. Так как большинство веб-сайтов и веб-приложений взаимодействуют с базами данных SQL, атака на основе SQL-инъекции может нанести серьезный ущерб организации.

SQL-запрос – это запрос, направленный в базу данных для выполнения определенной операции или функции, такой как извлечение данных или исполнение SQL-кода. Например, запрос может осуществлять передачу учетных данных пользователя через веб-форму для доступа к сайту. Обычно подобные веб-формы сконфигурированы таким образом, чтобы принимать только определенные типы данных, такие как имя пользователя и (или) пароль. Введенная информация сверяется с базой данных. Если все совпадает, пользователь сможет войти на сайт. А если нет – в доступе будет отказано.

Ситуация опасна тем, что большинство веб-форм не имеют механизмов, которые бы исключали ввод дополнительной информации в поле. Это дает злоумышленникам возможность передать в базу данных собственные запросы через поля ввода формы. Они могут использовать эту уязвимость в разных преступных целях, начиная с кражи конфиденциальных данных и заканчивая манипулированием сведениями в базе.

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

Симптомы SQLi-атаки

Успешно проведенная атака с SQL-инъекцией может вообще никак себя не проявлять. Тем не менее иногда можно заметить следующие симптомы:

  • Получение избыточного числа запросов за короткий промежуток времени. Например, массовый поток электронных писем от формы обратной связи веб-сайта.
  • Рекламные блоки, перенаправляющие пользователя на подозрительные веб-сайты.
  • Странные всплывающие окна и сообщения об ошибках. 

Типы SQL-инъекций

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

w3.org/1999/xhtml»>Внутриполосная атака (In-band SQLi) 

Это самый простой вид атаки для злоумышленников, так как для реализации атаки и сбора результатов используется один и тот же канал связи. Этот тип SQLi-атак разделяют на два подвида:

  • Атака на основе ошибок (Error-based SQLi). При такой атаке действия злоумышленника приводят к тому, что база данных генерирует сообщение об ошибке. На основе полученных сообщений об ошибках злоумышленник пытается сформировать представление об инфраструктуре базы данных.
  • Атака на основе объединения (Union-based SQLi). Атакующий получает необходимые данные путем объединения нескольких инструкций SELECT в единый ответ HTTP с помощью SQL-оператора UNION.

Инференциальная атака (Inferential SQLi, также известна как «слепая SQL-инъекция») 

w3.org/1999/xhtml»>При таких атаках злоумышленники изучают ответы и поведение сервера после отправки наборов данных, чтобы узнать больше о структуре базы данных. При этом никакие записи из базы данных веб-сайта не передаются злоумышленнику, и он не видит их в том же канале связи, как в случае внутриполосной атаки (этим и объясняется название «слепая SQL-инъекция»). Такие атаки разделяют на два подвида:

  • Слепая атака, основанная на времени (Time-based SQLi). Атакующие направляют SQL-запрос к базе данных, вынуждая ее сделать задержку на несколько секунд, прежде чем она подтвердит или опровергнет полученный запрос.
  • Булевая слепая атака (Boolean SQLi). Атакующие делают SQL-запрос к базе данных, ожидая получить результат в виде утвердительного или отрицательного ответа.

Внеполосная атака (Out-of-band SQLi) 

Такая атака происходит в двух случаях:

    w3.org/1999/xhtml»>
  • когда атакующие не могут провести атаку и собрать данные через один и тот же канал связи; или
  • когда сервер работает слишком медленно или нестабильно, чтобы достичь нужного результата.

Последствия атак на основе SQL-инъекции

Успешная SQLi-атака может нанести серьезный ущерб бизнесу. SQL-инъекция может привести к следующим последствиям:

  • Раскрытие конфиденциальных данных. Атакующие могут заполучить конфиденциальную информацию, хранящуюся на SQL-сервере.
  • Компрометация целостности данных.
     Злоумышленники могут отредактировать или удалить информацию в вашей системе.
  • Нарушение приватности пользователей. В зависимости от того, какие данные хранятся на SQL-сервере, атака может привести к раскрытию конфиденциальных пользовательских данных – адресов, номеров телефонов и сведений банковских карт.
  • Получение злоумышленниками административного доступа к вашей системе. Если у пользователя базы данных есть привилегии администратора, с помощью вредоносного кода атакующий может заполучить доступ к системе.
  • Получение злоумышленниками общих прав доступа к вашей системе. Если для проверки имен пользователей и паролей применяются слишком простые SQL-команды, атакующий сможет заполучить доступ к вашей системе, даже не имея действующих учетных данных пользователя. После этого злоумышленник сможет добраться до конфиденциальной информации и изменить ее, создав большие проблемы для вашего бизнеса.

Ущерб от SQLi-атак не только финансовый. Успешная атака может привести к репутационным потерям и утрате доверия клиентов, если произойдет кража персональной информации – имен, адресов, телефонных номеров и данных кредитных карт. Вернуть доверие клиентов гораздо сложнее, чем его потерять.

w3.org/1999/xhtml»>Примеры SQL-инъекций

За годы существования этого класса уязвимостей от SQLi-атак пострадало множество организаций. Приведем некоторые громкие случаи:

Fortnite, 2019 г.Fortnite – это онлайн-игра с аудиторией, насчитывающей более 350 млн игроков. В 2019 году была обнаружена уязвимость для SQL-инъекции, которая позволила злоумышленникам получить доступ к пользовательским учетным записям. Уязвимость впоследствии закрыли.

Cisco, 2018 г.

В 2018 году была найдена уязвимость для SQL-инъекции в Cisco Prime License Manager. Брешь позволила атакующим заполучить доступ к командной оболочке систем, на которых был развернут диспетчер лицензий Cisco. Компания Cisco впоследствии закрыла эту уязвимость.

Tesla, 2014 г.

w3.org/1999/xhtml»>В 2014 году специалисты по кибербезопасности заявили об успешном взломе веб-сайта Tesla методом SQL-инъекции – им удалось получить административные привилегии и украсть пользовательские данные.

Вопросы и ответы об SQLi-атаках

Часто задаваемые вопросы об SQLi-атаках:

Что представляет собой атака на основе SQL-инъекции?

Атака на основе SQL-инъекции подразумевает внедрение вредоносного SQL-кода с целью манипулирования серверной базой данных и доступа к закрытой информации. Сюда могут относиться конфиденциальные данные компании, списки пользователей или сведения о клиентах. SQL – это аббревиатура от Structured Query Language (язык структурированных запросов). Иногда понятие «атака с применением SQL-инъекции» сокращают до SQLi.

Что происходит в процессе SQL-инъекции?

w3.org/1999/xhtml»>С помощью SQLi-атаки злоумышленники могут подменять цифровую личность, изменять существующие данные, извлекать конфиденциальные данные, удалять данные или делать их недоступными, а также получать права администратора сервера базы данных. SQL-инъекция способна нанести серьезный ущерб бизнесу, включая утрату доверия клиентов в случае утечки конфиденциальных данных.

Насколько распространены атаки на основе SQL-инъекции?

Злоумышленники довольно часто прибегают к SQLi-атакам, ведь их относительно просто реализовать, а успешная атака может принести большую прибыль. Однозначной статистики на этот счет нет, но по усредненным оценкам, SQL-инъекции составляют основную часть атак на программные системы. По данным сообщества Open Web Application Security Project, атаки на основе внедрения кода, к которым также относится SQL-инъекция, являлись третьим по значимости риском безопасности для веб-приложений в 2021 году.

Как предотвратить атаку на основе SQL-инъекции?

Вот ключевые принципы, которые помогут компаниям защитить свои веб-сайты и веб-приложения от потенциальной SQL-инъекции:

Проводите тренинги для персоналаПовышайте осведомленность о риске SQLi-атак среди членов команды, отвечающей за ваше веб-приложение, и проводите ролевые тренинги для всех пользователей.

Помните о контроле пользовательского вводаЛюбые пользовательские данные, указанные в SQL-запросе, несут потенциальные риски. До окончания проверки любые адреса, вводимые аутентифицированными и (или) внутренними пользователями, стоит обрабатывать так же, как и поступающие извне данные. Учетные записи, которые подключаются к базе данных SQL, должны обладать только минимально необходимым набором привилегий. По возможности применяйте списки разрешенных, а не запрещенных слов в ходе проверки и фильтрации пользовательского ввода.

Не забывайте об обновленияхДля максимальной защиты важно пользоваться самой последней версией вашей среды разработки, так как в старых версиях могут отсутствовать некоторые современные функции безопасности. Устанавливайте актуальные версии ПО и исправления безопасности сразу после их выпуска.

Проводите регулярные проверки веб-приложений

Пользуйтесь комплексными инструментами управления производительностью приложений. Регулярные проверки веб-приложений позволяют выявить и устранить потенциальные уязвимости до того, как они обернутся серьезными проблемами.

Используйте сетевой экран

Нередко для отсеивания SQLi-атак и прочих онлайн-угроз применяется сетевой экран веб-приложений (WAF). WAF фильтрует вредоносные SQL-запросы, сравнивая их с объемными и регулярно обновляемыми списками сигнатур. Обычно сигнатуры в этом списке описывают специфические векторы атак. Такой список регулярно обновляется после обнаружения новых уязвимостей.

Другие продукты

  • Антивирус Касперского
  • Kaspersky Total Security
  • Kaspersky Internet Security
  • Kaspersky Password Manager
  • Kaspersky Secure Connection

Статьи по теме:

  • Что такое троянская программа?
  • Как модель нулевого доверия приводит к масштабным изменениям в кибербезопасности?
  • Что такое защита рабочих мест и как она работает?
  • Что такое вредоносные программы с нулевым щелчком?
  • Что такое межсайтовые скрипты?

Почему SQL Injection — это самый опасный вид уязвимостей?

29 января 2018

Самый распространенный способ взлома сайтов и программ, работающих с базами данных, — SQL Injection. Чем же так опасна данная уязвимость?

SQL инъекция на данный момент является не только широко распространенной уязвимостью, а еще и одной из самых опасных по версии OWASP Top 10 Application Security Risks 2017. Попробуем разобраться почему.

Суть уязвимости — выполнение произвольного запроса к базе данных. Запрос может быть любым: на чтение, запись, модификацию и удаление каких-либо записей. Звучит катастрофично, не правда ли? А ведь этими угрозами все не ограничивается, так как при определённых обстоятельствах можно добраться и до чтения/записи локальных файлов или даже до выполнения кода! Все зависит от целей, которые преследует злоумышленник, от используемой системы и того, как она сконфигурирована.

Существует несколько типов SQL инъекций:

  • Классическая SQL Injection — простая и легкая в эксплуатации. Позволяет злоумышленнику атаковать БД и сразу видеть результат атаки. В последнее время встречается нечасто.
  • Error-based SQL Injection — чуть более сложный и затратный по времени тип атаки, позволяющий, на основе выводимых ошибок СУБД, получить информацию о всей БД и хранящиеся в ней данные. Эксплуатируется, если кто-то в спешке забыл отключить вывод ошибок.
  • Boolean-based SQL Injection — одна из «слепых» инъекций. Суть атаки сводится к добавлению специального подзапроса в уязвимый параметр, на который БД будет отвечать либо True, либо, неожиданно, False. Атака не позволяет сразу вывести все данные БД «на экран» злоумышленнику, но позволяет, перебирая параметры раз за разом, получить содержимое БД, хотя для этого потребуется временной отрезок соизмеримый с содержимым БД .
  • Time-based SQL Injection — следующая из «слепых» инъекций. В данном случае злоумышленник добавляет подзапрос, приводящий к замедлению или паузе работы БД при некоторых условиях. Таким образом, атакующий, сравнивая время ответа на «True» и на «False» запросы, символ за символом может получить все содержимое БД, но времени уйдет на это больше, чем в случае эксплуатации Boolean-based атаки.
  • Out-of-band SQL Injection — редкий тип. Атака может быть успешна только при определенных обстоятельствах, например, если сервер БД может генерировать DNS- или HTTP-запросы, что встречается нечасто. ), но, в зависимости от обстоятельств, чаще в БД хранится множество весьма критичных данных: учетные записи пользователей (включая пароли), номера телефонов, адреса электронной почты, а нередко номера карт, их сроки действия и прочие сопутствующие сведения.

    Чем грозит? В первую очередь, репутационными потерями, ведь мало кто захочет пользоваться сервисом, из которого могут вытащить какую-либо информацию о нём. Ещё хуже, если пароли хэшировались слабыми алгоритмами, что потенциально приведет к их восстановлению. Как вы понимаете, это крайне негативно отразится на всем бизнесе. Нечто подобное случилось у компании Taringa (новость на thehackernews.com), где пароли хранились хэшированными алгоритмом MD5, который еще в 2011 году был признан устаревшим (RFC 6151). В результате около 94% были восстановлены в течение нескольких суток.

    Deface


    Про последствия deface’а, наверняка, слышал каждый. Некоторые, даже встречали разного рода «акции», выраженные в размещении рекламы на главных страницах зачастую немаленьких и известных организаций, настройку редиректов на «вирусные сайты», замену всей главной страницы каким-нибудь мемом, а иногда даже и угрозами. Такие манипуляции зачастую организованы как раз при помощи SQL Injection-атак.
    Помимо столь грубых способов указать на проблемы безопасности, существуют более утонченные и элегантные. Например, долгое время предлагалась «услуга» по размещению номера телефона заказчика на сайте жертвы. То есть пользователь, заходя на сайт компании А, знакомился с описанием товаров и услуг, но звонил по подмененному номеру уже в компанию Б. И, что тоже немаловажно, такие «модификации» сайта замечаются далеко не сразу.

    Отдельно стоит упомянуть популярные в последнее время ICO. Почему? А потому что, если кто-нибудь заменит опубликованный в официальном источнике адрес кошелька, на который собираются средства, эти средства станут собираться уже на счете злоумышленника. Такие атаки были с успехом проведены несколько раз в прошлом году.

    Отказ в обслуживании, пожалуй, одно из самых нелюбимых бизнесом событий. Причина этого проста: возникают простои в обслуживании клиентов, которые ведут как к потере репутации, так и к упущенной выгоде. DoS вызывается просто: либо база заполняется «мусорными» записями, либо, что гораздо опаснее, она просто удаляется. Второй случай особенно интересен, если по каким-либо причинам не делались (или не проверялись!) бэкапы.

    Чтение системных файлов


    Атака встречается весьма редко и работает только при некорректной настройке системы. Суть заключается в чтении системных файлов, в которых также указаны различные настройки, учётные записи и прочие чувствительные данные. Обычно подобные атаки применяются для углубления понимания атакуемой системы и намётывания дальнейших действий с целью получения доступа к ней.

    Повышение привилегий

    Некоторых нехороших пользователей по каким-то причинам может не устраивать тот факт, что они не являются администраторами в системах. С помощью SQL инъекции у таких пользователей появляется шанс исправить данную ситуацию. Так, например, в популярной CMS Joomla существовала возможность через инъекцию вытащить Cookie учётной записи администратора. Одним запросом, кстати говоря. А небезызвестная и распространённая MS SQL может предоставить даже несколько способов повысить привилегии (в зависимости от того, как сконфигурирована СУБД).

    К чему это может привести? К большим проблемам, если кратко. Последующий сценарий подобной атаки может быть любым: это и все ранее перечисленные угрозы, и дополнительно, все действия, доступные администратору (может отличаться от системы к системе).
    Повышение привилегий — одно из самых неприятных развитий событий, так как злоумышленник с правами администратора может доставить немало хлопот.

    Remote Code Execution (RCE)


    Является, пожалуй, самым опасным вектором атаки, к счастью, нечасто встречающимся. Обычно выполняется с целью получения shell’а и, следовательно, контроля над сервером целиком.
    Часто RCE осуществляется уже после атаки Privilege Escalation и из-за слабых настроек прав доступа в системе, но это происходит не всегда так. Для реализации атаки злоумышленник загружает файл-зловред и либо запускает его удалённо, либо сам одним из доступных образом «цепляется» к нему.
    Какие последствия могут быть? Любые, включая все ранее перечисленные. Все опять же зависит от целей злоумышленника. Кто-то начинает использовать сервер для майнинга криптовалюты, кто-то может настроить репликацию БД на «свой» сервер, а кто-то просто пойдет дальше и постарается получить управление остальными серверами в локальной сети. Последствия могут быть самыми печальными.

    Как защититься?

    Несмотря на всю серьёзность уязвимости, защита от атаки весьма проста: при разработке приложения необходимо уделить особое внимание фильтрации ввода и настройке прав. Обязательно отключайте вывод ошибок на «рабочей» системе, ни к чему пользователю такая чувствительная информация. И после каких-либо изменений в приложении проводить ASV-сканирования для гарантии. А в идеале, ввести данные действия в Software Development Life Cycle. Он же у вас уже есть, верно?

    Используете готовое приложение? Всегда своевременно обновляйтесь. Часто это простое правило может уберечь от плачевных последствий.

    Дополнительной мерой является установка Web Application Firewall (WAF) систем. Именно подобный класс решений заточен на борьбу с выше описанными атаками и, надо сказать, весьма хорош.

    Хотите убедиться, что ваши системы надежно защищены? Или интересуетесь пилотом WAF? Обращайтесь, мы с радостью проведем аудит или поможем с тестом решения по защите от подобных атак.

    Филипп Заболотный
    Ведущий инженер, Акрибия

    Follow @AcribiaRu

    Join channel

    Другие публикации по теме

    22 января 2018

    О требованиях по безопасности значимых объектов критической информационной инфраструктуры

    17 ноября 2017

    Рекомендации по защите: Distributed DoS (DDoS)

    27 августа 2017

    Обзор решения: RedCheck

    07 ноября 2017

    Инструменты аналитика SOC для выявления инцидентов

    Услуги

    Акрибия: Центр оперативного мониторинга

    Услуги

    Акрибия: Поддержка и аутсорсинг

    404: Страница не найдена

    Качество программного обеспечения

    Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы приносим свои извинения за доставленные неудобства.

    Что я могу сделать сейчас?

    Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:

    Поиск
    • Узнайте последние новости.
    • Наша домашняя страница содержит последнюю информацию о качестве программного обеспечения.
    • Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, «Качество программного обеспечения».
    • Если вам нужно, свяжитесь с нами, мы будем рады услышать от вас.

    Просмотр по категории

    Облачные вычисления

    • Руководство для конференции по AWS re:Invent 2022

      Ознакомьтесь с последними новостями, выпусками продуктов и обновлениями технологий, а также анализом и рекомендациями экспертов от AWS re:Invent 2022 . ..

    • Рост доходов Nutanix за счет продления подписки

      Доходы Nutanix подскочили на 15% благодаря увеличению числа пользователей, продлевающих свои подписки. Компания также отчиталась о положительном квартальном …

    • Сравните Azure Key Vault и секреты Kubernetes

      Секреты требуют определенного уровня обслуживания, такого как хранение, доставка и управление. Сравните услуги по этим критериям и узнайте …

    Архитектура приложения

    • 10 учебных курсов для подготовки к сертификации по микросервисам

      Хотя получить сертификат по архитектуре микросервисов не всегда просто, существует множество курсов, которые вы можете пройти, чтобы …

    • Признаки антипаттерна «Золотой молот» и 5 способов его избежать

      Антипаттерн «Золотой молот» может подкрасться к команде разработчиков, но есть способы его обнаружить. Изучайте знаки, а также некоторые…

    • Почему контрактное тестирование может быть необходимо для микросервисов

      Разработчики сталкиваются с многочисленными проблемами, пытаясь выполнить традиционное сквозное интеграционное тестирование микросервисов. Контракт…

    ИТОперации

    • 5 советов по достижению полной наблюдаемости стека

      Достижение полной наблюдаемости стека по-прежнему чревато проблемами, но это необходимый шаг для предприятий, работающих со сложным …

    • Как создавать и использовать карты в Голанге Карты

      являются популярной структурой данных во многих контекстах программирования благодаря их эффективности и скорости. Но, в Го, некоторые уникальные…

    • Используйте платформу CALMS для плавного перехода DevOps

      Внедрение DevOps может оказаться сложной задачей, особенно при общении между ИТ-отделами и бизнес-группами. Пять элементов СПОКОЙСТВИЯ …

    TheServerSide.com

    • Различия между Java и TypeScript должны знать разработчики

      Вы знаете Java? Вы пытаетесь изучить TypeScript? Вот пять различий между TypeScript и Java, которые сделают …

    • Владелец продукта и менеджер продукта: в чем разница?

      Работа менеджера по продукту в компании сильно отличается от роли владельца продукта в команде Scrum. Узнать ключ…

    • Введение в викторину Scrum

      Хотите доказать свое знание Scrum? Ответьте на 10 вопросов по введению в Scrum и узнайте, насколько хорошо вы знаете Scrum…

    ПоискAWS

    • AWS Control Tower стремится упростить управление несколькими учетными записями

      Многие организации изо всех сил пытаются управлять своей огромной коллекцией учетных записей AWS, но Control Tower может помочь. Услуга автоматизирует…

    • Разбираем модель ценообразования Amazon EKS

      В модели ценообразования Amazon EKS есть несколько важных переменных. Покопайтесь в цифрах, чтобы убедиться, что вы развернули службу…

    • Сравните EKS и самоуправляемый Kubernetes на AWS Пользователи

      AWS сталкиваются с выбором при развертывании Kubernetes: запустить его самостоятельно на EC2 или позволить Amazon выполнить тяжелую работу с помощью EKS. См…

    Что такое SQL-инъекция и как предотвратить SQL-инъекцию

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

    Что такое SQL-инъекция?

    SQL Injection — это уязвимость на основе кода, которая позволяет злоумышленнику читать и получать доступ к конфиденциальным данным из базы данных. Злоумышленники могут обходить меры безопасности приложений и использовать SQL-запросы для изменения, добавления, обновления или удаления записей в базе данных. Успешная атака путем внедрения SQL-кода может серьезно повлиять на веб-сайты или веб-приложения, использующие реляционные базы данных, такие как MySQL, Oracle или SQL Server. В последние годы было много нарушений безопасности, вызванных атаками SQL-инъекций.

    С этим базовым пониманием того, «что такое SQL-инъекция», вы теперь рассмотрите различные типы SQL-инъекций.

    Типы SQL-инъекций

    In-band SQLi — Злоумышленники используют один и тот же канал связи для запуска своих атак и сбора результатов.

    Существует два распространенных типа внутриполосных внедрений SQL: внедрение SQL на основе ошибок и внедрение SQL на основе объединения.

    1. SQL-инъекция на основе ошибок. Злоумышленник выполняет определенные действия, которые приводят к тому, что база данных генерирует сообщения об ошибках. По сообщению об ошибке можно определить, какую базу данных она использует, версию сервера, на котором расположены обработчики и т. д.
    2. Внедрение SQL на основе объединения. Здесь оператор SQL UNION используется для объединения результатов двух или более операторов select, сгенерированных базой данных, для получения одного HTTP-ответа. Вы можете создавать свои запросы в URL-адресе или комбинировать несколько операторов в полях ввода и пытаться сгенерировать ответ.

    Blind SQLi — здесь данные не передаются через веб-приложение. Злоумышленник не может видеть результат атаки внутри полосы.

    1. Внедрение SQL на основе логических значений. Злоумышленник отправляет SQL-запрос в базу данных, предлагая приложению вернуть разные результаты в зависимости от того, возвращает ли запрос значение True или False.
    2. SQL-инъекция на основе времени. В этой атаке злоумышленник отправляет SQL-запрос в базу данных, что заставляет базу данных ждать определенное время, прежде чем поделиться результатом. Время отклика помогает злоумышленнику решить, является ли запрос истинным или ложным.

    Внедрение SQL из-за границы. Внедрение SQL из-за границы не так популярно, так как зависит от функций, которые включены на сервере базы данных, используемом веб-приложениями. Это может быть похоже на ошибку неправильной настройки администратором базы данных.

    Теперь пришло время понять еще одну важную тему этой статьи под названием «Что такое SQL-инъекция», т. е. как предотвратить SQL-инъекцию?

    Как работает SQL на веб-сайте?

    Веб-сайт состоит из трех основных компонентов: внешнего интерфейса, внутреннего интерфейса и базы данных.

    Внешний интерфейс веб-сайта разработан с использованием HTML, CSS и JavaScript. На бэкэнде у вас есть языки сценариев, такие как Python, PHP, Perl и т. д. На стороне сервера есть базы данных, такие как MySQL, Oracle и MS SQL Server, для выполнения запросов.

    Когда вы пишете запрос, вы обычно отправляете запрос на получение на веб-сайт. Затем вы получаете ответ от веб-сайта с HTML-кодом.

    Используя инструмент Postman API, вы можете тестировать ответы, которые вы получаете от различных веб-сайтов.

    Демонстрация внедрения SQL

    • Перейдите в Google Chrome или любой другой веб-браузер и выполните поиск неработающих веб-приложений owasp
    • Нажмите на ссылку sourceforge.net
    • Выберите параметр «Загрузить», чтобы загрузить OWASP Broken Web Applications Project 9.0010

    Это приложение было разработано в рамках проекта Open Web Application Security Project, который периодически публикует 10 основных рисков, с которыми может столкнуться приложение в течение определенного года. У него есть коллекция уязвимых веб-приложений, которые распространяются на виртуальной машине.

    В этом проекте есть встроенные уязвимости, позволяющие учащимся и профессионалам практиковать и развивать свои навыки работы с SQL-инъекциями.

    Примечание. Выполнение SQL-инъекций в реальном мире на любом веб-сайте является незаконным.

    • После загрузки виртуальной машины OWASP Broken Web Apps откройте ее на рабочей станции VMware.
    • Вы можете увидеть IP-адрес машины. В данном случае это 192.168.71.132
    • .

    • Используйте указанный выше IP-адрес и откройте его в браузере

    Вы найдете обучающие приложения и реалистичные, намеренно уязвимые приложения.

    Также можно найти старые версии реальных приложений и многое другое.


    Для демонстрации вы будете использовать приложение OWASP Mutillidae II.

    Слева вы можете увидеть 10 основных рисков OWASP за 2013, 2010 и 2007 годы. 

    Щелкните SQLi — Обход аутентификации > Войти

    Вы перейдете на обычную страницу аутентификации при входе, которую может запросить любое приложение.

    Предположим, вы вводите анонимный логин и пароль, что не позволит вам войти в систему.

    Давайте напишем оператор SQL в имени пользователя и попробуем снова войти в систему.

    • Мое имя пользователя будет: ‘ или 1=1 — 
    • Нажмите «Войти»
    • Вы войдете в систему в это время с обновлением статуса, говорящим, что он аутентифицировал пользователя

    Одинарная кавычка (‘) — это оператор, который обращается к серверу базы данных, выбирает пользовательские таблицы по умолчанию и сравнивает их с заданным условием. То условие, которое вы дали, было 1=1, что всегда верно. Таким образом, он выбрал пользовательскую таблицу по умолчанию, которая была доступна в базе данных, и вместо того, чтобы сравнить ее с паролем, он сравнил ее с условием.

    Если вы зададите ложное условие, например 1=2, вы получите сообщение об ошибке «Учетная запись не существует».

    Теперь, когда вы рассмотрели демонстрацию того, как можно использовать SQL-запрос для входа в приложение, давайте разберемся в последнем разделе этой статьи — «что такое SQL-инъекция».

    Как предотвратить внедрение SQL?

    1. Использовать подготовленные операторы и параметризованные запросы. Параметризованные операторы обеспечивают безопасную обработку параметров, переданных в операторы SQL.
    2. Объектно-реляционное сопоставление. Большинство групп разработчиков предпочитают использовать инфраструктуры объектно-реляционного сопоставления для более плавного преобразования наборов результатов SQL в объекты кода.
    3. Экранирование входных данных — это простой способ защиты от большинства атак путем внедрения кода SQL. Многие языки имеют стандартные функции для достижения этой цели. Вы должны быть осторожны при использовании escape-символов в своей кодовой базе, где создается инструкция SQL.

    Некоторые из других методов, используемых для предотвращения SQL-инъекций:

    • Хэширование пароля
    • Сторонняя аутентификация
    • Брандмауэр веб-приложений
    • Приобретите лучшее программное обеспечение
    • Всегда обновлять и использовать исправления
    • Непрерывно отслеживать операторы SQL и базу данных

    Заключение

    Атаки

    SQL Injection могут использовать базу данных организации и контролировать сервер базы данных за веб-приложением.

Оставить комментарий

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

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