
f03a5da99394f8d067a8cf7f254f2358.ppt
- Количество слайдов: 17
SQL-injections for “dummies”
Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQLкода.
Пример $id = $_REQUEST['id']; $res = mysql_query("SELECT * FROM news WHERE id_news = $id"); http: //site. com/news. php? id=5 SELECT * FROM news WHERE id_news = 5 http: //site. com/news. php? id=-1+OR+1=1 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%')"); http: //site. com/news. php? search_text=qwerty 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%')
Причины n n n Отсутствие необходимой обработки входящих запросов Отсутствие обработки ошибок Отсутствие ограничений прав
Последствия n n n Компрометация пользовательских данных Дамп БД Внедрение “бэкдора” Доступ к хостовой ОС Подмена данных Внедрение данных
Основные типы n n 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 n 1. 2. 3. n Time-based К уязвимому запросу добавляется синтаксически верный SQL-запрос Замеряется время обработки запроса Замеряется изменение времени обработки при изменении запроса Boolean-based
Тестирование Выполняется: n Программистами на основании code review n DBA и/или QA – проверка настроек БД, прав пользователей, имен таблиц и т. д. n QA: 1. Тестирование вручную – на основании знаний о системе и выполняемых ею функций 2. Автоматизированные тестирование – с использованием сканеров для определения потенциально опасных функций и/или возможности эксплуатации определенных функций
Автоматизация Проблема: Поиск производится по «шаблону» - большое количество ложных срабатываний. Следствие: эффективность тестирования «общими» сканерами стремится к 0. Варианты решения: 1. Ручное тестирование 2. Ревъю кода 3. Использование узкоспециализированных либо «самописных» средств
SQLmap Преимущества: n минимальное количество ложных срабатываний n возможность эксплуатации встроенными средствами n развернутая информация об уязвимости n простота в использовании n бесплатность Недостатки: n Необходимость предварительного ручного тестирования (поиск потенциальных слабостей) n Необходимость минимальных технических навыков n Требуется понимание принципов инъекций и их использования
Методы защиты n n Обработка вводимых данных Ограничение прав Логгеры, триггеры Else…
Links: n n n http: //en. wikipedia. org/wiki/SQL_injection http: //sqlmap. sourceforge. net http: //mwgrasp. oni. cc http: //antichat. ru https: //www. owasp. org http: //www. mavitunasecurity. com/netsparker
Q&A
f03a5da99394f8d067a8cf7f254f2358.ppt