Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемНикита Шавкунов
1 SQL-injections for dummies
2 Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL- кода.
3 Пример $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
4 Пример $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%')
5 Причины Отсутствие необходимой обработки входящих запросов Отсутствие обработки ошибок Отсутствие ограничений прав
6 Последствия Компрометация пользовательских данных Дамп БД Внедрение бэкдора Доступ к хостовой ОС Подмена данных Внедрение данных
7 Основные типы UNION query Error-based Stacked queries Blind injections
8 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
9 Error-based SQL injection Инъекция заведомо некорректного запроса с целью получения ошибки для определения типа и версии используемой СУБД. 1. Определение уязвимостей, специфичных для данной версии. 2. Определение особенностей СУБД. 3. Определение дальнейшего вектора атаки
10 Stacked queries SQL injection Если веб-приложение поддерживает последовательные запросы - в уязвимый параметр HTTP-запроса добавляется точка с запятой (;) и следом внедряемый SQL- запрос. SELECT id_news, header, body, author FROM news WHERE id_news = -1; SELECT username,password FROM admin
11 Blind SQL-injection Time-based 1. К уязвимому запросу добавляется синтаксически верный SQL-запрос 2. Замеряется время обработки запроса 3. Замеряется изменение времени обработки при изменении запроса Boolean-based
12 Тестирование Выполняется: Программистами на основании code review DBA и/или QA – проверка настроек БД, прав пользователей, имен таблиц и т.д. QA: 1. Тестирование вручную – на основании знаний о системе и выполняемых ею функций 2. Автоматизированные тестирование – с использованием сканеров для определения потенциально опасных функций и/или возможности эксплуатации определенных функций
13 Автоматизация Проблема: Поиск производится по «шаблону» - большое количество ложных срабатываний. Следствие: эффективность тестирования «общими» сканерами стремится к 0. Варианты решения: 1. Ручное тестирование 2. Ревъю кода 3. Использование узкоспециализированных либо «самописных» средств
14 SQLmap Преимущества: минимальное количество ложных срабатываний возможность эксплуатации встроенными средствами развернутая информация об уязвимости простота в использовании бесплатность Недостатки: Необходимость предварительного ручного тестирования (поиск потенциальных слабостей) Необходимость минимальных технических навыков Требуется понимание принципов инъекций и их использования
15 Методы защиты Обработка вводимых данных Ограничение прав Логгеры, триггеры Else…
16 Links:
17 Q&A
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.