Мегаобучалка Главная | О нас | Обратная связь


Суть атаки на основе SQL инъекции 



2019-08-13 345 Обсуждений (0)
Суть атаки на основе SQL инъекции  0.00 из 5.00 0 оценок




ВВЕДЕНИЕ

Как правило, атаки с использованием SQL-инъекции весьма просты, поэтому удивительно, что они до сих пор остаются одним из наиболее распространенных и наиболее опасных видов атак, доступных компьютерным взломщикам. Список жертв этих атак практически совпадает с перечнем крупнейших Интернет-компаний. Жертвами этого хорошо известного эксплойта становились даже самые защищенные веб-сайты, в том числе сайты LinkedIn, Yahoo!, ФБР и НАСА. Один из самых масштабных случаев применения SQL-инъекции имел место в 2011 году на веб-сайте Sony PlayStation Network. С помощью SQL-инъекции взломщики получили доступ к 77 миллионам учетных записей пользователей (и к сопутствующим личным данным). В результате одного только простоя по причине этой атаки компания Sony недополучила доходов на миллионы долларов. Совокупный ущерб от атак с использованием SQL-инъекций на веб-сайты, среди которых сайты крупных банков, сайты социальных сетей и т. д., исчисляется миллиардами долларов США.

Задачами данной работы являются: изучение особенностей внедрения операторов SQL (SQL-инъекции), исследование методы обнаружения аномалий в SQL-запросах к базам данных, изучение методов защиты от такого типа атак, а также исследование особенностей операторов в таких популярных СУБД как: MsSQL Server, MySQL, MariaDB, PostgreSQL.

Целью данной работы является написание программного средства (фаервола), предназначенного для защиты СУБД от такой критической уязвимости, как SQL-инъекции. Фаервол должен быть универсальным, а именно работать с СУБД: MsSQL Server, MySQL, MariaDB, PostgreSQL, и должен иметь защиту от атак типа внедрения SQL-кода, такую как возможность анализа пакетов, выявление инъекций и блокировка опасных запросов

Целью работы – является разработка методологии повышение уровня защищенности реляционной базы данных (БД) путем разработки и внедрения мер по защите от атак класса SQL-injection.

Актуальность работы обусловлена тем, что на сегодняшний день, по статистике Positive Technologies, более 70% систем были обнаружены критические опасные уязвимости, среди которых и SQL-инъекции [2]. Эксплуатация этой уязвимости может привести к получению несанкционированного доступа к важной информации, хранящейся в базах данных.


 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Веб-сервер Apache

Веб-сервер Apache это программное обеспечение с открытым исходным кодом, веб-сервер, который обеспечивает работу около 46% сайтов по всему миру. Официальное название – Apache HTTP Сервер, поддерживается и развивается компанией Apache Software Foundation.

Веб-сервер позволяет владельцам сайтов обслуживать их контент в интернете, о чём понятно с самого название “веб-сервер”. Apache один из самый старых и надёжный веб-серверов с первой версией выпуска более 20 лет назад в 1995 году.

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

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

Хоть Apache и называется веб-сервер, но в реальном положении вещей он является не сервером, а программой, которая запускается на сервере. Его задача установить соединение между сервером и браузером посетителей (Firefox, Google Chrome, Safari и др.) при доставке файлов туда и обратно между ними (клиент-серверная структура). Apache – это кроссплатформенное программное обеспечение, что значит оно хорошо работает как на Unix, так и на Windows серверах.

Когда посетитель хочет загрузить страницу вашего сайта, например, домашнюю страницу или страницу “О нас”, его браузер отправляет запрос на ваш сервер и Apache возвращает ответ со всеми запрошенными файлами (текст, изображение и так далее). Сервер и клиент взаимодействуют по протоколу HTTP и Apache ответственен за гладкое и безопасное соединение между двумя машинами.

Apache хорошо и удобно настраиваемый поскольку имеет модульную структуру. Модули позволяют администраторам сервера включать или выключать дополнительную функциональность. У Apache есть модули безопасности, кэширования, редактирования URL, аутентификации посредством пароля и другие. Вы можете установить свою собственную конфигурацию через файл .htaccess, который является файлом настроек для Apache и поддерживается всеми тарифными планами Hostinger.

Веб-сервер Apache может быть прекрасным выбором для запуска вашего сайта на стабильной и универсальной платформе. Но у него есть и свои недостатки, на которые стоит обратить внимание.

Преимущества:

1. Бесплатный даже для использования в коммерческих целях.

2. Надежный, стабильное программное обеспечение.

3. Часто обновляемый, регулярные патчи безопасности.

4. Гибкий благодаря своей модульной структуре.

5. Легко настраиваемый, дружелюбный для начинающих.

6. Кроссплатформенный (работает одинаково хорошо на Unix и на Windows серверах).

7. Работает для сайтов на WordPress сразу после установки без дополнительных настроек.

8. Большое сообщество и легко доступная поддержка в случае любой проблемы.

Недостатки:

1. Проблемы производительности на сайтах с большим трафиком.

2. Слишком много параметров конфигурации могут привести к уязвимостям в безопасности.

 

 

Язык запросов SQL

Язык SQL – Structured Query Language – был разработан в 1974 г. в ходе работы над System R. В период становления технологий баз данных SQL был не единственным и, возможно, не самым лучшим языком запросов реляционных баз данных, но со временем стал стандартом в этой области. Такая "победа" языка SQL обусловлена, во-первых, ориентацией на него первых и ведущих производителей коммерческих СУБД, во-вторых, тем, что уже в своей версии для System R он был достаточно хорошо развит не только как язык запросов, но и обеспечивал в полном объеме описание и управление данными. Коммерческие продукты далеко не сразу обеспечили свойства исходной версии SQL в полном объеме.

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

Разработкой стандартов языка SQL занимается Американский национальный комитет по стандартизации (ANSI) при поддержке Международной Организации Стандартов (ISO). Стандарты SQL принимались в 1987 г. (уточнен в 1989 г.), в 1992 г и в 1999 г. Однако даже ведущие СУБД сертифицированы только на уровень "Entry" стандарта SQL-92. В реальных СУБД применяются "диалекты" SQL. Процесс стандартизации динамичный и трудный – то, что сегодня является диалектом одной СУБД, завтра может стать стандартом. Язык SQL состоит из трех подмножеств:

● языка определения данных;

● языка манипулирования данными;

● языка управления данными.

Sql-инъекция

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

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

SQL инъекция — это один из самых доступных способов взлома сайта.

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

Возможны SQL инъекции (SQL внедрения) такие как:

1) Наиболее простые — сворачивание условия WHERE к истинному результату при любых значениях параметров.

2) Присоединение к запросу результатов другого запроса. Делается это посредством оператора UNION.

3) «Закомментирование» части запроса.

 

Суть атаки на основе SQL инъекции 

Рассмотрим простую атаку с использованием SQL-инъекции, чтобы понять принципы ее работы. Этот тип атакующего эксплойта манипулирует запросом к базе данных на основе вводимых пользователем данных с применением некорректно фильтруемых специальных «escape»-символов. На рис. 1 показана простая атака с использованием SQL-инъекции. С точки зрения архитектуры пользователь при посредстве веб-клиента взаимодействует по протоколу HTTP с фронтендом веб-сервера, который, в свою очередь, взаимодействует с бэкендом в виде SQL-сервера. В ситуации входа пользователя в систему этот фронтенд веб-сервера применяет предоставляемую пользователем информацию при построении SQL-запроса. Как правило, защищенный веб-сервер требует от каждого пользователя, чтобы он аутентифицировал себя в системе, представив имя пользователя и пароль. Обычно веб-сервер выполняет следующую SQL-операцию (в которой uname и pword являются входными переменными):

 select * from Users where userid=’uname’ AND password= ‘pword’;

Введя в эту веб-форму определенным образом подобранную информацию, злоумышленник может обойти намерения разработчика и модифицировать исполняемый запрос. В примере на рисунке 1 я изменил условие запроса, чтобы запросить все записи. Для этого я использовал выражение OR (которое всегда имеет значение true) и с помощью комментария деактивировал проверку пароля.

 

Рисунок 1.Пример OR.

 

 

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



2019-08-13 345 Обсуждений (0)
Суть атаки на основе SQL инъекции  0.00 из 5.00 0 оценок









Обсуждение в статье: Суть атаки на основе SQL инъекции 

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (345)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)