|
История появления уязвимостиС момента изобретения способа хранения данных в реляционных базах, возникали попытки НСД к хранящейся информации. В 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 Классификация уязвимости в соответствии с По области происхождения данную уязвимость относят к типу ‘уязвимость кода'. По типам недостатков Информационных Систем: 1. Недостатки, связанные с неполнотой проверки вводимых (входных) данных. 2. Недостатки, связанные с неправильной настройкой параметров ПО. 3. Недостатки, связанные с возможностью внедрения команд. 4. Недостатки, связанные с внедрением интерпретируемых операторов языков программирования или разметки. 5. Недостатки, связанные с внедрением произвольного кода. 6. Недостатки, приводящие к утечке/раскрытию информации ограниченного доступа. 7. Недостатки, связанные с аутентификацией. 8. По месту возникновения - уязвимость в общесистемном (общем) программном обеспечении. Паспорт уязвимости Паспорт уязвимости КВИС
Реализация уязвимости. Для примера был взят случайный сайт в сети интернет. В нашем случае это сайт по продаже компьютерного оборудования (принтеров) Целью является получение доступа в административную часть сайта.
(Мы вошли под тестовой учетной записью.)
Добавляем в поисковую строку всякий «мусор» чтобы увидеть какую-нибудь ошибку на сайте. Таким образом мы поймем, что запрос рабочий. Далее немного меняем параметр «name», чтобы убедится, что он идет напрямую в базу данных сайта.
Получаем следующий результат:
Мы видим все принтеры (сайт по продаже принтеров), значит запрос и правда идет напрямую в базу данных. Таким образом мы можем извлечь из нее любую информацию. Наибольшую ценность представляют пароли от учетных записей пользователей.
Находим таблицу «Logins» Администратор хранит «хэши» по виду md5.
Используем сервис passcracking.com
Расшифровываем пароль и входим на сайт уже через учетную запись Администратора.
Теперь мы можем «администрировать» чужой сайт.
Таким образом, используя несложный алгоритм действий мы получили полный доступ к учетным записям пользователей сайта, которые в свою очередь могут содержать данные о физических адресах людей и прочей информации, которая может представлять ценность для злоумышленников.
Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|