1 / 17

SQL-injections

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

ballari-taj
Download Presentation

SQL-injections

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL-injections for “dummies”

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

  3. Пример $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

  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%')"); 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%')

  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 UNIONSELECT1, username,password, 1FROM admin

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

  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 • К уязвимому запросу добавляется синтаксически верный SQL-запрос • Замеряется время обработки запроса • Замеряется изменение времени обработки при изменении запроса • Boolean-based

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

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

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

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

  16. Links: • 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

  17. Q&A

More Related