2012 09-27-risspa-web-pt2
DESCRIPTION
TRANSCRIPT
БЕЗОПАСНОСТЬ ВЕБ-ПРИЛОЖЕНИЙStarter Edition, part II
Петухов Андрей
Wednesday, November
СодержаниеBroken cookiesBroken HTTPSBroken UI (UI redressing) Атаки класса XXEBroken Defense (WAF, browser security and other)
Wednesday, November
Broken cookies✓ Нужны для реализации сессий (сеансов)✓ Де-факто используются для аутентификации запросов✓ Формат Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>] [; path=<some_path>][; secure][; httponly]
✓ Scoping: cookie SoP != DOM SoP➡ Не ограничены портом и протоколом (cookie с http://example.com/ уйдут на
https://example.com:8080/)➡ Трудно ограничить домен➡ Протокол можно ограничить флагом secure
✓ Read more: http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_cookies
Wednesday, November
Broken cookies: scoping✓ Атрибут domain отсутствует✓ Атрибут domain присутствует и содержит wildcard ✓ Атрибут domain присутствует и содержит адрес (warning!)✓ См. таблицу (взята из The Tangled Web)✓ Что все это значит?
➡ есть сайт site.com с авторизацией➡ есть сайт bar.site.com либо под нашим контролем, либо с XSS => p0wned!
Wednesday, November
Broken HTTPS✓ Открытые сети в массы
➡ доступны инструменты для пассивного прослушивания трафика➡ доступны инструменты для MiTM
✓ Основные угрозы для критичных приложений➡ перехват учетных данных➡ перехват cookies, которые аутентифицируют запросы
✓ Сайты защищаются от угроз с помощью HTTPS✓ Пользователи открытых сетей защищаются, работая с критичными сайтами в открытых сетях только по HTTPS
✓ Этого не достаточно!✓ Заблуждение: “если я не открываю через открытую сеть сайт, мои учетные данные и cookies в сохранности”. Fail.
✓ Пример перехвата: http://www.youtube.com/watch?v=Bf8pziDavfQ
Wednesday, November
Broken HTTPS
✓ Как делать правильно:➡ cookies помечать флагом secure (и httponly!)➡ использовать HTTP Strict Transport Security (https://developer.mozilla.org/en-
US/docs/Security/HTTP_Strict_Transport_Security)
Wednesday, November
Broken UI✓ Предпосылки:
➡ HTML: iframe➡ js: возможность динамически менять размеры и положения элементов,
навешивать и снимать обработчики событий, менять курсор➡ CSS: свойство opacity, свойство cursor
✓ В общем случае атака называется UI Redressing и имеет много видов: clickjacking, strokejacking, cursorjacking, likejacking
✓ Почитать:➡ Кратко: http://podlipensky.com/2012/07/clickjacking-explained/➡ Полно: UI Redressing: Attacks and Countermeasures Revisited
✓ Демо:➡ http://digitalbreed.com/clickjacking-demo/facebook.php➡ http://podlipensky.com/2012/08/cursor-spoofing-cursorjacking/
Wednesday, November
Broken UI✓Защита приложения: ➡ Рекомендуется: X-Frame-Options: deny/sameorigin➡ Не рекомендуется: frame-busting code (см. “Busting frame
busting: a study of clickjacking vulnerabilities at popular sites”)
✓Защита клиента➡ NoScript (технология ClearClick)
Wednesday, November
XML и XXE✓ XML - де-факто стандартный транспорт на прикладном уровне
(XML-RPC, SOAP)✓ Документы: правильные и действительные✓ Парсеры:
➡ обычные и валидирующие (DTD и XML Schema)➡ реально распространены: libxml, msxml и xerces
✓ Сущности: ➡ внешние и внутренние➡ валидирующий парсер обязан разрешить внешнюю сущность, а
невалидирующий - по желанию➡ реально многие парсеры по умолчанию всегда разрешают внешние
сущности
Wednesday, November
XML и XXE✓ Что можно сделать:
➡ считывать локальные файлы <!ENTITY xxe SYSTEM "file:///etc/passwd">➡ DoS <!ENTITY dos SYSTEM "/dev/zero">➡ сканировать DMZ- сегмент <!ENTITY scan SYSTEM "\\192.168.1.1\C$">
или <!ENTITY scan SYSTEM "http://10.0.0.1:22/">➡ отправлять произвольные (почти) запросы (SSRF)
<!ENTITY ssrf SYSTEM "http://internalhost/admin?p=value"> Hint: вместо http можно использовать любой поддерживаемый протокол! Больше в статье SSRF vs. Business-critical applications: XXE tunneling in SAP
✓ Защита: dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
Wednesday, November
Broken Defense✓ “Свое мнение” у каждого браузера ➡ пример с cookies и IE, AntiXSS фильтры, Content Sniffing➡ недавняя история с багами Оперы; 4lulz http://rutracker.org/
forum/viewtopic.php?t=4228361
✓WAF не защищает от атак без синтаксических аномалий (т.е. не injection-атак)➡ black-listing vs white-listing➡ black-listing учитывает особенности атак, white - защищаемого приложения
➡ не injection-атаки (например, атаки на уязвимости авторизации) не вызывают синтаксических аномалий
➡ не injection-атаки используют особенности приложений
Wednesday, November
Спасибо за внимание!Вопросы?
Twitter: @p3tand
Blog: https://andrepetukhov.wordpress.com/
Email: [email protected]
Видео лекций: https://www.youtube.com/playlist?list=PL2173C4AB816E4F3F
Must read: “The Tangled Web” by Michal Zalewski
Wednesday, November