Веб-страницы
<<  Microsoft Lync 2010 Web App Training Сервисы Веб 2.0 в практике работы педагога  >>
Sergey Belov - web app security
Sergey Belov - web app security
Cross Site Scripting (XSS)
Cross Site Scripting (XSS)
Виды XSS
Виды XSS
Методы использования
Методы использования
Подстановка HTML-кода
Подстановка HTML-кода
data:text/html;base64,
data:text/html;base64,
Flash/Изображения
Flash/Изображения
UTF-7/Trace
UTF-7/Trace
RULE #0 - Never Insert Untrusted Data Except in Allowed Locations
RULE #0 - Never Insert Untrusted Data Except in Allowed Locations
RULE #1 - HTML Escape Before Inserting Untrusted Data into HTML
RULE #1 - HTML Escape Before Inserting Untrusted Data into HTML
RULE #2 - Attribute Escape Before Inserting Untrusted Data into HTML
RULE #2 - Attribute Escape Before Inserting Untrusted Data into HTML
RULE #3 - JavaScript Escape Before Inserting Untrusted Data into
RULE #3 - JavaScript Escape Before Inserting Untrusted Data into
RULE #4 - CSS Escape And Strictly Validate Before Inserting Untrusted
RULE #4 - CSS Escape And Strictly Validate Before Inserting Untrusted
{ background-url : "javascript:alert(1)"; } // and all other URLs {
{ background-url : "javascript:alert(1)"; } // and all other URLs {
RULE #5 - URL Escape Before Inserting Untrusted Data into HTML URL
RULE #5 - URL Escape Before Inserting Untrusted Data into HTML URL
RULE #6 - Sanitize HTML Markup with a Library Designed for the Job -
RULE #6 - Sanitize HTML Markup with a Library Designed for the Job -
DEMO
DEMO

Презентация: «Sergey Belov - web app security». Автор: BeLove. Файл: «Sergey Belov - web app security.pptx». Размер zip-архива: 69 КБ.

Sergey Belov - web app security

содержание презентации «Sergey Belov - web app security.pptx»
СлайдТекст
1 Sergey Belov - web app security

Sergey Belov - web app security

~ 2 years in Bitworks (Mojiva) CTF member – SiBears, [TechnoPandas] habrahabr.ru / “Xakep” magazine Google, VK, Topface, kinopoisk, Yandex (bug bounty member) and 100+ twitter.com/sergeybelove

2 Cross Site Scripting (XSS)

Cross Site Scripting (XSS)

(вики) XSS (англ. Сross Site Sсriрting — «межсайтовый скриптинг») тип уязвимости интерактивных информационных систем в вебе. XSS возникает, когда в генерируемые сервером страницы по какой-то причине попадают пользовательские скрипты. Специфика подобных атак заключается в том, что вместо непосредственной атаки сервера они используют уязвимый сервер в качестве средства атаки на клиента. Реальные угрозы: Воровство cookie DoS атаки Атаки на браузер пользователя, воровство данных Выполнение произвольных действий на сайте под учетной записью пользователя

3 Виды XSS

Виды XSS

Пассивные Пассивные XSS подразумевают, что скрипт не хранится на сервере уязвимого сайта, либо он не может автоматически выполниться в браузере жертвы. Для срабатывания пассивной XSS требуется некое дополнительное действие, которое должен выполнить браузер жертвы (например, клик по специально сформированной ссылке). Их также называют первым типом XSS. Активные При активных XSS вредоносный скрипт хранится на сервере, и срабатывает в браузере жертвы при открытии какой-либо страницы заражённого сайта. Их также называют вторым типом XSS. DOM XSS

4 Методы использования

Методы использования

Более менее-актуальные: Обычный, непосредственная вставка HTML кода Использование DATA (base64) Менее актуальные: Flash, Изображения TRACE, UTF-7

5 Подстановка HTML-кода

Подстановка HTML-кода

Форма: <input type = “text”> Введенное значение: <h1>Hello!</h1> Должно быть на выходе (с фильтрацией) &lt;h1&gt;test&lt;/h1&gt; Без фильтрации (xss) <h1>Hello!</h1>

6 data:text/html;base64,

data:text/html;base64,

..

Требуется поддержка браузером RFC 2397 Используется в основном в скриптах перенаправления Защита с преобразовыванием символов не спасает от уязвимости (архитектурный баг)

7 Flash/Изображения

Flash/Изображения

Flash: Требуеся возможность вставки .swf Использование JS функций Изображения Особенность браузеров обрабатывать js код в содержимом картинки (IE)

8 UTF-7/Trace

UTF-7/Trace

UTF-7 Успех зависит от браузера <title> до установки charset Trace Зависит от конфигурации сервера

9 RULE #0 - Never Insert Untrusted Data Except in Allowed Locations

RULE #0 - Never Insert Untrusted Data Except in Allowed Locations

<script>...NEVER PUT UNTRUSTED DATA HERE...</script> directly in a script <!--...NEVER PUT UNTRUSTED DATA HERE...--> inside an HTML comment <div ...NEVER PUT UNTRUSTED DATA HERE...=test /> in an attribute name <NEVER PUT UNTRUSTED DATA HERE... href="/test" /> in a tag name <style>...NEVER PUT UNTRUSTED DATA HERE...</style> directly in CSS

10 RULE #1 - HTML Escape Before Inserting Untrusted Data into HTML

RULE #1 - HTML Escape Before Inserting Untrusted Data into HTML

Element Content

<body>...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...</body> <div>...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...</div> any other normal HTML elements

11 RULE #2 - Attribute Escape Before Inserting Untrusted Data into HTML

RULE #2 - Attribute Escape Before Inserting Untrusted Data into HTML

Common Attributes

<div attr=...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...>content</div> inside UNquoted attribute <div attr='...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...'>content</div> inside single quoted attribute <div attr="...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...">content</div> inside double quoted attribute

12 RULE #3 - JavaScript Escape Before Inserting Untrusted Data into

RULE #3 - JavaScript Escape Before Inserting Untrusted Data into

JavaScript Data Values

<script>alert('...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...')</script> inside a quoted string <script>x='...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...'</script> one side of a quoted expression <div onmouseover="x='...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...'"</div> inside quoted event handler <script> window.setInterval('...EVEN IF YOU ESCAPE UNTRUSTED DATA YOU ARE XSSED HERE...'); </script>

13 RULE #4 - CSS Escape And Strictly Validate Before Inserting Untrusted

RULE #4 - CSS Escape And Strictly Validate Before Inserting Untrusted

Data into HTML Style Property Values

<style>selector { property : ...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...; } </style> property value <style>selector { property : "...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE..."; } </style> property value <span style="property : ...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...">text</style> property value

14 { background-url : "javascript:alert(1)"; } // and all other URLs {

{ background-url : "javascript:alert(1)"; } // and all other URLs {

background-url : "javascript:alert(1)"; } // and all other URLs { text-size: "expression(alert('XSS'))"; } // only in IE

15 RULE #5 - URL Escape Before Inserting Untrusted Data into HTML URL

RULE #5 - URL Escape Before Inserting Untrusted Data into HTML URL

Parameter Values

<a href="http://www.somesite.com?test=...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...">link</a >

16 RULE #6 - Sanitize HTML Markup with a Library Designed for the Job -

RULE #6 - Sanitize HTML Markup with a Library Designed for the Job -

https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet RULE #7 - Prevent DOM-based XSS - https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet

17 DEMO

DEMO

«Sergey Belov - web app security»
http://900igr.net/prezentacija/informatika/sergey-belov-web-app-security-224657.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды