2012 09-27-risspa-web-pt2

12
БЕЗОПАСНОСТЬ ВЕБ-ПРИЛОЖЕНИЙ Starter Edition, part II Петухов Андрей Wednesday, November

Upload: risspa

Post on 25-Dec-2014

5.959 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 2012 09-27-risspa-web-pt2

БЕЗОПАСНОСТЬ ВЕБ-ПРИЛОЖЕНИЙStarter Edition, part II

Петухов Андрей

Wednesday, November

Page 2: 2012 09-27-risspa-web-pt2

СодержаниеBroken cookiesBroken HTTPSBroken UI (UI redressing) Атаки класса XXEBroken Defense (WAF, browser security and other)

Wednesday, November

Page 3: 2012 09-27-risspa-web-pt2

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

Page 4: 2012 09-27-risspa-web-pt2

Broken cookies: scoping✓ Атрибут domain отсутствует✓ Атрибут domain присутствует и содержит wildcard ✓ Атрибут domain присутствует и содержит адрес (warning!)✓ См. таблицу (взята из The Tangled Web)✓ Что все это значит?

➡ есть сайт site.com с авторизацией➡ есть сайт bar.site.com либо под нашим контролем, либо с XSS => p0wned!

Wednesday, November

Page 5: 2012 09-27-risspa-web-pt2

Broken HTTPS✓ Открытые сети в массы

➡ доступны инструменты для пассивного прослушивания трафика➡ доступны инструменты для MiTM

✓ Основные угрозы для критичных приложений➡ перехват учетных данных➡ перехват cookies, которые аутентифицируют запросы

✓ Сайты защищаются от угроз с помощью HTTPS✓ Пользователи открытых сетей защищаются, работая с критичными сайтами в открытых сетях только по HTTPS

✓ Этого не достаточно!✓ Заблуждение: “если я не открываю через открытую сеть сайт, мои учетные данные и cookies в сохранности”. Fail.

✓ Пример перехвата: http://www.youtube.com/watch?v=Bf8pziDavfQ

Wednesday, November

Page 6: 2012 09-27-risspa-web-pt2

Broken HTTPS

✓ Как делать правильно:➡ cookies помечать флагом secure (и httponly!)➡ использовать HTTP Strict Transport Security (https://developer.mozilla.org/en-

US/docs/Security/HTTP_Strict_Transport_Security)

Wednesday, November

Page 7: 2012 09-27-risspa-web-pt2

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

Page 8: 2012 09-27-risspa-web-pt2

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

Page 9: 2012 09-27-risspa-web-pt2

XML и XXE✓ XML - де-факто стандартный транспорт на прикладном уровне

(XML-RPC, SOAP)✓ Документы: правильные и действительные✓ Парсеры:

➡ обычные и валидирующие (DTD и XML Schema)➡ реально распространены: libxml, msxml и xerces

✓ Сущности: ➡ внешние и внутренние➡ валидирующий парсер обязан разрешить внешнюю сущность, а

невалидирующий - по желанию➡ реально многие парсеры по умолчанию всегда разрешают внешние

сущности

Wednesday, November

Page 10: 2012 09-27-risspa-web-pt2

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

Page 11: 2012 09-27-risspa-web-pt2

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

Page 12: 2012 09-27-risspa-web-pt2

Спасибо за внимание!Вопросы?

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