SQL-injections for dummies. Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL-

Презентация:



Advertisements
Похожие презентации
Нарушение целостности структуры SQL-запроса. Внедрение SQL-кода (SQL injection) один из распространённых способов взлома ПО, работающего с базами данных,
Advertisements

Тестирование безопасности или Security and Access Control Testing.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
Тамбовский государственный университет имени Г.Р. Державина Институт математики, физики и информатики Кафедра информатики и информационных технологий Иванова.
Практические аспекты сетевой безопасности Уязвимости в веб-приложениях Часть I: SQLi.
Open InfoSec Days Томск, 2011 Глава 1. Атаки на веб-приложения и методы защиты Занятие 6. Автоматизация процесса поиска уязвимостей и их последующей эксплуатации.
Open InfoSec Days Томск, 2011 Глава 1. Атаки на веб-приложения и методы защиты.
Корпоративные системы Лекция 5. Механизмы доступа к БД через Web-интерфейс.
Open InfoSec Days Томск, 2011 Глава 1. Атаки на веб-приложения и методы защиты Занятие 3. File Inclusion.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Поисковые движки. Sphinx Search Engine. Докладчик: Роман Кудлай
Проблемы обеспечения безопасности приложений Тема 20.
Бабашкин Геннадий Дмитриевич. упростить оптимизировать работу небольших провайдеров автоматизация учета клиентов и их тарификации информация о клиентах.
Технологии и продукты Microsoft в обеспечении ИБ Лекция 16. Анализ защищённости информационной системы на основе выявления уязвимостей и обнаружения вторжений.
Получение контроля над объектом атаки Местонахождение атакующего В разных сегментах с объектом атаки Используемые уязвимости Цель Ошибки реализации Степень.
Безопасный код © Александр Швец
Базы данных. Введение Базы данных обеспечивают хранение информации. Доступ к базе данных осуществляется через специальную программу - систему управления.
Актуальность работы Необходимость разработки системы дистанционного тестирования профессиональных знаний, устраняющей недостатки существующих систем и.
Особенности проведения тестов на проникновение в организациях банковской сферы © , Digital Security Илья Медведовский, к.т.н. Директор Digital.
1 Основы SQL: MySQL Будем использовать MySQL СУБД с открытым кодом Бесплатная версия (Community Edition) – на В Linux-дистрибутивах.
Транксрипт:

SQL-injections for dummies

Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL- кода.

Пример $id = $_REQUEST['id']; $res = mysql_query("SELECT * FROM news WHERE id_news = $id"); SELECT * FROM news WHERE id_news = 5 SELECT * FROM news WHERE id_news = -1 OR 1=1

Пример $search_text = $_REQUEST['search_text']; $res = mysql_query("SELECT id_news, news_date, news_caption, news_text, news_id_author FROM news WHERE news_caption LIKE('%$search_text%')"); SELECT id_news, news_date, news_caption, news_text, news_id_author FROM news WHERE news_caption LIKE('%Test%') ')+and+(news_id_author='1 SELECT id_news, news_date, news_caption, news_text, news_id_author FROM news WHERE news_caption LIKE('%') AND (news_id_author='1%')

Причины Отсутствие необходимой обработки входящих запросов Отсутствие обработки ошибок Отсутствие ограничений прав

Последствия Компрометация пользовательских данных Дамп БД Внедрение бэкдора Доступ к хостовой ОС Подмена данных Внедрение данных

Основные типы UNION query Error-based Stacked queries Blind injections

UNION query SQL injection $res = mysql_query("SELECT id_news, header, body, author FROM news WHERE id_news = ". $_REQUEST['id']); -1 UNION SELECT 1, username, password, 1 FROM admin SELECT id_news, header, body, author FROM news WHERE id_news = -1 UNION SELECT 1, username, password, 1 FROM admin

Error-based SQL injection Инъекция заведомо некорректного запроса с целью получения ошибки для определения типа и версии используемой СУБД. 1. Определение уязвимостей, специфичных для данной версии. 2. Определение особенностей СУБД. 3. Определение дальнейшего вектора атаки

Stacked queries SQL injection Если веб-приложение поддерживает последовательные запросы - в уязвимый параметр HTTP-запроса добавляется точка с запятой (;) и следом внедряемый SQL- запрос. SELECT id_news, header, body, author FROM news WHERE id_news = -1; SELECT username,password FROM admin

Blind SQL-injection Time-based 1. К уязвимому запросу добавляется синтаксически верный SQL-запрос 2. Замеряется время обработки запроса 3. Замеряется изменение времени обработки при изменении запроса Boolean-based

Тестирование Выполняется: Программистами на основании code review DBA и/или QA – проверка настроек БД, прав пользователей, имен таблиц и т.д. QA: 1. Тестирование вручную – на основании знаний о системе и выполняемых ею функций 2. Автоматизированные тестирование – с использованием сканеров для определения потенциально опасных функций и/или возможности эксплуатации определенных функций

Автоматизация Проблема: Поиск производится по «шаблону» - большое количество ложных срабатываний. Следствие: эффективность тестирования «общими» сканерами стремится к 0. Варианты решения: 1. Ручное тестирование 2. Ревъю кода 3. Использование узкоспециализированных либо «самописных» средств

SQLmap Преимущества: минимальное количество ложных срабатываний возможность эксплуатации встроенными средствами развернутая информация об уязвимости простота в использовании бесплатность Недостатки: Необходимость предварительного ручного тестирования (поиск потенциальных слабостей) Необходимость минимальных технических навыков Требуется понимание принципов инъекций и их использования

Методы защиты Обработка вводимых данных Ограничение прав Логгеры, триггеры Else…

Links:

Q&A