Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







История появления уязвимости





С момента изобретения способа хранения данных в реляционных базах, возникали попытки НСД к хранящейся информации. В 1999 году, в каталог CVE (Common Vulnerabilities and Exposures) стали заносить SQL-инъекции, присвоив им идентификатор 'CWE 89’ (Improper Sanitization of Special Elements used in an SQL Command ('SQL Injection')). Начиная с 2003 года и по нынешний день, SQL-инъекция, как тип уязвимости, остается в топ-10 списка CVE уязвимостей.

В 2012 году представитель компании Barclaycard утверждал, что 97% данных нарушений являются результатом инъекции SQL. В конце 2011 года и до начала 2012 г., то есть только за один месяц, более одного миллиона серверов пострадало от инъекции Lilupophilupop SQL. В 2010 году официальный сайт Организации Объединенных Наций также стал жертвой SQL- инъекции.

По статистике за 2015 год, собранной компанией Wallarm, было зафиксировано, что SQL-инъекции составляют ~38% атак на веб-ресурсы (первое место). Это обусловлено наличием в открытом доступе множества инструментов для автоматизированного тестирования веб-приложений на этот тип уязвимости. Кроме того, риск уязвимости крайне высок — успешная эксплуатация сразу же открывает перед злоумышленником возможность получения полного доступа к базе данных.

 

Классификация уязвимостей

2.1 Основные классы SQL-инъекций:

 

UNION query SQL injection

Классический вaриант внедрения SQL-

кода, когда в уязвимый параметр передается выражение, нaчинающееся с «UNION ALL SELECT». Эта техника работает, когда веб-приложения нaпрямую возвращают результат вывода команды SELECT на страницу: с использованием цикла for или похожим способом, так что каждая запись полученной из БД выбoрки последовательно выводится на страницу. Sqlmap может также эксплуатировать ситуацию, кoгда возвращается только первая запись из выборки (Partial UNION query SQL injection).

 

Error-based SQL injection

В случае этой атаки сканер заменяет или добавляет в уязвимый параметр синтаксически неправильное выражение, после чего парсит HTTP-ответ (заголовки и тело) в поиске ошибок DBMS, в которых содержалась бы заранее известная инъецированная последовательность символов и где-то «рядом» вывод на интересующий нас подзапрос. Эта техника работает только тогда, когда веб-приложение по каким-то причинам (чаще всего в целях отладки) раскрывает ошибки DBMS.

Stacked queries SQL injection

Сканер проверяет, поддерживает ли веб-приложение последовательные запросы, и, если они выполняются, добавляет в уязвимый параметр HTTP-запроса точку с запятой (;) и следом внедряемый SQL-запрос. Этот прием в основном используется для внедрения SQL-команд, отличных от SELECT, например, для манипуляции данными (с помощью INSERT или DELETE). Примечательно, что техника потенциально может привести к возможности чтения/записи из файловой системы, а также выполнению команд в ОС. Правда, в зависимости от используемой в качестве бэк-энда системы управления базами данных, а также пользовательских привилегий.

 

Boolean-based blind SQL injection

Реализация так называемой «слепой» инъекции: данные из БД в «чистом» виде уязвимым веб-приложением нигде не возвращаются. Прием также называется дедуктивным. Sqlmap добавляет в уязвимый параметр HTTP-запроса синтаксически правильно составленное выражение, содержащее подзапрос SELECT (или любую другую команду для получения выборки из базы данных). Для каждого полученного HTTP-ответа выполняется сравнение headers/body страницы с ответом на изначальный запрос — таким образом, утилита может символ за символом определить вывод внедрённого SQL-выражения. В качестве альтернативы пользователь может предоставить строку или регулярное выражение для определения «true»-страниц (отсюда и название атаки).

 

Time-based blind SQL injection

Полностью слепая инъекция. Точно так же, как и в предыдущем случае, сканер «играет» с уязвимым параметром. Но в этом случае добавляет подзапрос, который приводит к паузе работы DBMS на определенное количество секунд (например, с помощью команд SLEEP() или BENCHMARK()). Используя эту особенность, сканер может посимвольно извлечь данные из БД, сравнивая время ответа на оригинальный запрос и на запрос с внедренным кодом. Здесь также используется алгоритм двоичного поиска. Кроме того, применяется специальный метод для верификации данных, чтобы уменьшить вероятность неправильного извлечения символа из-за нестабильного соединения.

 

2.2.1 Классификация уязвимости в соответствии с
ГОСТ Р-56546-2015

По области происхождения данную уязвимость относят к типу ‘уязвимость кода'.

По типам недостатков Информационных Систем:

1. Недостатки, связанные с неполнотой проверки вводимых (входных) данных.

2. Недостатки, связанные с неправильной настройкой параметров ПО.

3. Недостатки, связанные с возможностью внедрения команд.

4. Недостатки, связанные с внедрением интерпретируемых операторов языков программирования или разметки.

5. Недостатки, связанные с внедрением произвольного кода.

6. Недостатки, приводящие к утечке/раскрытию информации ограниченного доступа.

7. Недостатки, связанные с аутентификацией.

8. По месту возникновения - уязвимость в общесистемном (общем) программном обеспечении.

Паспорт уязвимости

Паспорт уязвимости КВИС

№ п/п Элементы описания уязвимости КВИС Описание уязвимости КВИС
  Наименование уязвимости SQL инъекция
  Идентификатор уязвимости CWE 89
  Краткое описание уязвимости Прямой ввод контролируемых атакающим данных в переменные, используемые в SQL командах.
  Класс уязвимости Уязвимость кода
  Наименование уязвимого элемента и его версия MySQL server всех версий.
  Место возникновения (проявления) уязвимости Уязвимость существует в SQL базах данных, из-за отсутствия проверки обрабатываемых параметров запроса.
  Идентификатор типа недостатка Нет данных
  Дата выявления уязвимости 03.06.1999
  Автор, опубликовавший информацию о выявленной уязвимости Oracle corp.
  Способ (правило) обнаружения уязвимости Выполнение пошаговой инструкции
  Критерии опасности уязвимости Превышение установленного значения вероятности риска
  Степень опасности уязвимости Средняя
  Возможные меры по устранению уязвимости Принятие мер по устранению возможностей SQL-инъекций.

 

Реализация уязвимости.

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

Целью является получение доступа в административную часть сайта.

 

(Мы вошли под тестовой учетной записью.)

 

 

Добавляем в поисковую строку всякий «мусор» чтобы увидеть какую-нибудь ошибку на сайте. Таким образом мы поймем, что запрос рабочий. Далее немного меняем параметр «name», чтобы убедится, что он идет напрямую в базу данных сайта.

 

Получаем следующий результат:

 

 

Мы видим все принтеры (сайт по продаже принтеров), значит запрос и правда идет напрямую в базу данных.

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

 

 

Находим таблицу «Logins»

Администратор хранит «хэши» по виду md5.

 

Используем сервис passcracking.com

 

 

Расшифровываем пароль и входим на сайт уже через учетную запись Администратора.

 

Теперь мы можем «администрировать» чужой сайт.

 

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

 

 







Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.