SlideShare a Scribd company logo
1 of 12
© Digital Security
Эвристический метод обнаружения DOM-based XSS с
использованием толерантных синтаксических
анализаторов
Докладчик: Перцев Алексей
Научный руководитель: Денис Колегов
© Digital Security 2
github.com/ptresearch/DOMSanitizer
Disclaimer
Исследование базируется на работе «WAF.js: как защищать
веб-приложения с использованием JavaScript»
PHDays2016. Докладчики:
● Денис Колегов (@dnkolegov)
● Арсений Реутов (@ru_raz0r)
© Digital Security 3
DOMSanitizer как часть WAF.js
© Digital Security 4
Работа DOMSanitizer
Анализирует Sources:
● document.url
● location.hash
● location.search
● document.title
● ....
Но не знает Sinks:
● document.write
● window.location = "..."
● и другие.
Acorn.js
© Digital Security 5
github.com/ternjs/acorn
Работа Acorn.js
Абстрактное синтаксическое
дерево (AST)
if (x > y) {
max = x;
} else {
max = y;
}
Запрещенные узлы:
● Обращения в window, document;
● var a = 1;
● function () {alert(‘xss’)};
● ...
© Digital Security 6
Решение: github.com/ternjs/acorn#distacorn_loosejs
DOMSanitizer bypass
Название
контекста
Условия Обход
Атрибут
HTML тега
● <img bar="ввод" >
● <img bar=‘ввод’ >
● <img bar=ввод >
'><svg/onload='alert(1)
' onLoad="alert(1);//
Javascript <body onload=”think.oob(ввод)”> )},{0:promt(1
<body onload=”think.oob()},{0:promt(1)”>
© Digital Security 7
Ложные срабатывания
© Digital Security 8
SecLists - goo.gl/8QClsM
Тестирование
176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/lock.png HTTP/1.1" 200 601
176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/logo-garant-group.png HTTP/1.1" 200 2502
176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/black-bg.png HTTP/1.1" 200 11122
176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/violet-bg.png HTTP/1.1" 200 27325
95.27.245.109 - - [14/Nov/2016:06:52:32 +0300] "GET /catalog/ekskavatory/?utm_source=yandex&utm_medium=cpc
&utm_campaign=19039635&utm_content=2256195269&utm_term={PHRASE} HTTP/1.1" 200 3808
allinurl: %3fparam%3d OR %26param%3d OR %23param
Google Custom Search
© Digital Security 9
Ошибки Acornloose
for your (eyes in open) window
© Digital Security 10
Исправление ошибок
Корректная обработка следующих ситуаций:
● не распознанные узлы помечаются «Х»;
● пропускаются фрагменты строки;
● нарушения семантики.
© Digital Security 11
github.com/pertsev/DOMSanitizer
Выводы
● Снижение количества ложных срабатываний до уровня
DOMSanitizer в обычном режиме
● Поверхность обнаруживаемых атак (attack surface)
расширена
© Digital Security 12
github.com/pertsev/DOMSanitizer
Спасибо за внимание
С вами был @p4lex

More Related Content

What's hot

Mythbusters - Web Application Security
Mythbusters - Web Application SecurityMythbusters - Web Application Security
Mythbusters - Web Application SecurityMikhail Shcherbakov
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.revisium
 
Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...
Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...
Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...Expolink
 
Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017
Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017
Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017S-Terra CSP
 
Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...
Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...
Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...Expolink
 

What's hot (6)

#1 razvedka i sbor dannih
#1 razvedka i sbor dannih#1 razvedka i sbor dannih
#1 razvedka i sbor dannih
 
Mythbusters - Web Application Security
Mythbusters - Web Application SecurityMythbusters - Web Application Security
Mythbusters - Web Application Security
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
 
Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...
Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...
Доктор Веб. Кирилл Тезиков "Dr.Web Enterprise Security Suite. Защита бизнеса ...
 
Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017
Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017
Доклад С-Терра на «ИнфоФоруме-2017», 02.02.2017
 
Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...
Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...
Доктор веб. Кирилл Тезиков. "Dr.Web Enterprise Security Suite. Защита бизнеса...
 

Similar to Эвристический метод обнаружения DOM-based XSS с использованием толерантных синтаксических анализаторов

Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxssyaevents
 
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
 
Android.глазами хакера
Android.глазами хакераAndroid.глазами хакера
Android.глазами хакераNeuron Hackspace
 
Hakr 5 14-myjurnal.ru
Hakr 5 14-myjurnal.ruHakr 5 14-myjurnal.ru
Hakr 5 14-myjurnal.ruVasya Pupkin
 
Жизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложенийЖизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложенийRISClubSPb
 
Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Fwdays
 
Как банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасностьКак банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасностьAndrey Apuhtin
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Sphinx + MongoDB: работаем вместе.
Sphinx + MongoDB: работаем вместе.Sphinx + MongoDB: работаем вместе.
Sphinx + MongoDB: работаем вместе.MageCloud
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsKirill Danilov
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...Dmitry Evteev
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтовEugene Fidelin
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...Solar Security
 
Е. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовЕ. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовAlbina Tiupa
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2GoQA
 
Безопасность без антивирусов 3
Безопасность без антивирусов 3Безопасность без антивирусов 3
Безопасность без антивирусов 3Positive Hack Days
 
Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...jet_information_security
 
Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...
Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...
Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...Expolink
 

Similar to Эвристический метод обнаружения DOM-based XSS с использованием толерантных синтаксических анализаторов (20)

Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxss
 
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"
 
Android.глазами хакера
Android.глазами хакераAndroid.глазами хакера
Android.глазами хакера
 
Hakr 5 14-myjurnal.ru
Hakr 5 14-myjurnal.ruHakr 5 14-myjurnal.ru
Hakr 5 14-myjurnal.ru
 
Жизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложенийЖизненный цикл безопасной разработки платежных приложений
Жизненный цикл безопасной разработки платежных приложений
 
Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"
 
Как банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасностьКак банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасность
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Sphinx + MongoDB: работаем вместе.
Sphinx + MongoDB: работаем вместе.Sphinx + MongoDB: работаем вместе.
Sphinx + MongoDB: работаем вместе.
 
Secr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.jsSecr15 разработка кросс платформенных десктоп приложений nw.js
Secr15 разработка кросс платформенных десктоп приложений nw.js
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтов
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
 
Е. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовЕ. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтов
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
Безопасность без антивирусов 3
Безопасность без антивирусов 3Безопасность без антивирусов 3
Безопасность без антивирусов 3
 
Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...Расследование инцидентов: как правильно понять, что он произошел и как об это...
Расследование инцидентов: как правильно понять, что он произошел и как об это...
 
Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...
Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...
Доктор Веб. Максим Кузнецов. "Почему необходимо обеспечивать защиту почтового...
 

More from Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CorePositive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опытPositive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterPositive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиPositive Hack Days
 

More from Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Эвристический метод обнаружения DOM-based XSS с использованием толерантных синтаксических анализаторов

  • 1. © Digital Security Эвристический метод обнаружения DOM-based XSS с использованием толерантных синтаксических анализаторов Докладчик: Перцев Алексей Научный руководитель: Денис Колегов
  • 2. © Digital Security 2 github.com/ptresearch/DOMSanitizer Disclaimer Исследование базируется на работе «WAF.js: как защищать веб-приложения с использованием JavaScript» PHDays2016. Докладчики: ● Денис Колегов (@dnkolegov) ● Арсений Реутов (@ru_raz0r)
  • 3. © Digital Security 3 DOMSanitizer как часть WAF.js
  • 4. © Digital Security 4 Работа DOMSanitizer Анализирует Sources: ● document.url ● location.hash ● location.search ● document.title ● .... Но не знает Sinks: ● document.write ● window.location = "..." ● и другие. Acorn.js
  • 5. © Digital Security 5 github.com/ternjs/acorn Работа Acorn.js Абстрактное синтаксическое дерево (AST) if (x > y) { max = x; } else { max = y; } Запрещенные узлы: ● Обращения в window, document; ● var a = 1; ● function () {alert(‘xss’)}; ● ...
  • 6. © Digital Security 6 Решение: github.com/ternjs/acorn#distacorn_loosejs DOMSanitizer bypass Название контекста Условия Обход Атрибут HTML тега ● <img bar="ввод" > ● <img bar=‘ввод’ > ● <img bar=ввод > '><svg/onload='alert(1) ' onLoad="alert(1);// Javascript <body onload=”think.oob(ввод)”> )},{0:promt(1 <body onload=”think.oob()},{0:promt(1)”>
  • 7. © Digital Security 7 Ложные срабатывания
  • 8. © Digital Security 8 SecLists - goo.gl/8QClsM Тестирование 176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/lock.png HTTP/1.1" 200 601 176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/logo-garant-group.png HTTP/1.1" 200 2502 176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/black-bg.png HTTP/1.1" 200 11122 176.195.109.91 - - [19/Nov/2016:18:05:30 +0300] "GET /assets/default/images/violet-bg.png HTTP/1.1" 200 27325 95.27.245.109 - - [14/Nov/2016:06:52:32 +0300] "GET /catalog/ekskavatory/?utm_source=yandex&utm_medium=cpc &utm_campaign=19039635&utm_content=2256195269&utm_term={PHRASE} HTTP/1.1" 200 3808 allinurl: %3fparam%3d OR %26param%3d OR %23param Google Custom Search
  • 9. © Digital Security 9 Ошибки Acornloose for your (eyes in open) window
  • 10. © Digital Security 10 Исправление ошибок Корректная обработка следующих ситуаций: ● не распознанные узлы помечаются «Х»; ● пропускаются фрагменты строки; ● нарушения семантики.
  • 11. © Digital Security 11 github.com/pertsev/DOMSanitizer Выводы ● Снижение количества ложных срабатываний до уровня DOMSanitizer в обычном режиме ● Поверхность обнаруживаемых атак (attack surface) расширена
  • 12. © Digital Security 12 github.com/pertsev/DOMSanitizer Спасибо за внимание С вами был @p4lex