SlideShare a Scribd company logo
ИВАН ЧАЛЫКИН
“Легальный SOP Bypass.
Проблемы внедрения CORS-подобных технологий”
Agenda
2
SOP
3
SOP
4
SOP
5
SOP
6
SOP
7
Same Origin Policy
• Scheme
• Domain
• Port
Что можно?
• Отправить GET/POST запрос с куками
Что нельзя?
• Прочитать ответ на запрос
SOP
8
Same Origin Policy
• Scheme
• Domain
• Port
We need SOP bypass
9
Когда может потребоваться обмен данными разным доменам?
Авторизовать пользователя на другом домене
«куковый» домен “example.com”, надо дать возможность комментировать и на коротком
домене “exam.pl”
We need SOP bypass
10
Когда может потребоваться обмен данными разным доменам?
Авторизовать пользователя на другом домене
«куковый» домен “example.com”, надо дать возможность комментировать и на коротком
домене “exam.pl”
Разрешить одному поддомену забрать данные с другого
“mail.example.com” хочет подгрузить информацию с “disk.example.com”
We need SOP bypass
11
Когда может потребоваться обмен данными разным доменам?
Авторизовать пользователя на другом домене
«куковый» домен “example.com”, надо дать возможность комментировать и на коротком
домене “exam.pl”
Разрешить одному поддомену забрать данные с другого
“mail.example.com” хочет подгрузить информацию с “disk.example.com”
Узнать количество лайков в социальной сети
“shop.com” хочет показать сколько пользователей “VK.com” дизлайкнули товар
1. JSONP
12
JSONP
13
2011 год…
• Выходят фильмы: «1+1 Intochables», «Гарри поттер и Дары Смерти II»
• 50-летие полета человека в космос
• Умирает Стив Джобс
• Появляется Internet Explorer 9
- Поддерживает ли IE9 CORS (ajax)?
- Нет.
JSONP
14
JSONP
15
JSONP
16
JSONP
17
Хороший пример:
Токен присутствует, зла не совершить.
18
Плохой пример:
Токен отсутствует, возможно зло:
JSONP or XSSI
JSONP or XSSI
19
- А давайте формировать JS динамически, на основе сессии!
- Да, что может пойти не так? Мы разместим там:
Cross Site Script Inclusion
• Почту пользователя;
• Логин, ФИО, день рождения;
• Токены CSRF;
• Иную чувствительную информацию.
Blackhat 2015, ”Your Script in my Page”. Из 150 популярных сайтов 30% оказались так или иначе уязвимы.
<script src="http://victim.com/any_script.js"></script>
JSONP or XSSI
20
• Есть ли в запросе csrf токен? (лучше всего)
• Если токена нет, хотя бы реферер проверяется? (так себе)
• Имя callback функции валидируется? (A-Z, a-z, 0-9)
• Меняется ли JS в зависимости от сессии? Что-нибудь интересное?
Ладно, что проверять?
21
2. websockets
websockets
Tunnel arbitrary data
• JSON
• XML
• HTML − images, video, sound
• another protocol
22
websockets
23
Tunnel arbitrary data
• JSON
• XML
• HTML − images, video, sound
• another protocol
websockets
<--- Websocket Frame
24
websockets
25
Пример использования:
websockets
Аутентификация:
• Cookies (идеально хацкеру)
• GET param/custom-header token (идеально СИБ)
26
Что можно сделать?
• Hijacking (no origin check + cookie auth)
• DoS Server via Resource exhaustion (Client declares 2GB length, only
contains a few bytes)
• Стандартные баги связанные с кавычками
websockets
WS Hijack
27
websockets
WS Hijack
28
websockets
• ws:// не бро, wss:// бро
• CHECK THE ORIGIN (By default, Socket.IO allows all origins)
• CSP “connect-src” ограничит куда можно подключаться
• Как всегда: санитайзим пользовательский инпут
https://media.blackhat.com/bh-us-12/Briefings/Shekyan/BH_US_12_Shekyan_Toukharian_Hacking_Websocket_Slides.pdf
https://www.theseus.fi/bitstream/handle/10024/113390/Harri+Kuosmanen+-+Masters+thesis+-+Security+Testing+of+WebSockets+-+Final.pdf?sequence=1
29
Ладно, что проверять?
30
3. postMessage
postMessage
Общение между вкладками. Окнами. Айфреймами.
31
postMessage
Общение между вкладками. Окнами. Айфреймами.
32
postMessage
Общение между вкладками. Окнами. Айфреймами.
33
postMessage
34
postMessage
35
postMessage
36
postMessage
37
postMessage
38
postMessage
39
Можно посмотреть в:
> Chrome Dev Tools
> Source
> Global Listeners
> Message
postMessage
40
Можно посмотреть в:
> Chrome Dev Tools
> Source
> Global Listeners
> Message
postMessage debugger extension:
postMessage
41
Отправитель должен проверять, куда шлет:
Ладно, что проверять?
postMessage
42
Получатель должен проверить, откуда пришли данные:
Отправитель должен проверять, куда шлет:
Ладно, что проверять?
postMessage
Плохие примеры
43
ЛастПасс был готов принять месседж от кого угодно.
Мессадж попадал в Extension, вызываем LastPass RCP и исполняем код. RCE
https://bugs.chromium.org/p/project-zero/issues/detail?id=1209
Slack тоже слушал мессаджи от кого. В итоге была возможность заставить “подключить
по WS к вооот такому-то URL, используй собственный токен” LEAK
https://labs.detectify.com/2017/02/28/hacking-slack-using-postmessage-and-websocket-
reconnect-to-steal-your-precious-token/
44
4. CORS
CORS
Основы:
45
CORS
Основы:
46
GET /token HTTP 1.1
Host: example.com
Accept: */*
User-Agent: Mozilla/5.0
Origin: https://evil.com
Cookie: sessid=139f91391k9
HTTP/1.1 200 OK
Server: nginx/1.8.1
Content-Type: application/json
Access-Control-Allow-Origin: https://evil.com
Access-Control-Allow-Credentials: true
{“token”:1337}
Но!
Access-Control-Allow-Origin: *
//если вот так, то куки принудительно отключатся
браузером
CORS
Представим, что на сайте example.com меняется пароль так:
47
PUT /api/v1/user/10012 HTTP 1.1
Host: example.com
Accept: */*
Origin: https://example.com
Content-type: application/json
Cookie: JSESSION=367ajm23o19da0
{“password”:”sUp3ers3cr3t!”}
HTTP/1.1 200 OK
Server: nginx/1.8.1
Content-Type: application/json
{“status”:”ok”}
CORS на сервере отключен («Access-Contol-Allow-Origin» всегда отсутствует, данные не утекут)
- А будет ли тут CSRF на смену пароля?
CORS
Представим, что на сайте example.com меняется пароль так:
48
PUT /api/v1/user/10012 HTTP 1.1
Host: example.com
Accept: */*
Origin: https://example.com
Content-type: application/json
Cookie: JSESSION=367ajm23o19da0
{“password”:”sUp3ers3cr3t!”}
HTTP/1.1 200 OK
Server: nginx/1.8.1
Content-Type: application/json
{“status”:”ok”}
CORS на сервере отключен («Access-Contol-Allow-Origin» всегда отсутствует, данные не утекут)
- А будет ли тут CSRF на смену пароля?
- Нет. Ибо preflight.
CORS
Prefligh: презапрос для «непростых» реквестов
49
• METHOD != GET || POST || HEAD.
• CONTENT-TYPE != application/x-www-form-urlencoded || multipart/form-data ||text/plain
• Присутствуют “кастомные” заголовки
Method OPTIONS Браузер ожидает:
HTTP/1.1 200 OK
Access-Control-Allow-Method: методы
Access-Control-Allow-Origin: хосты
Access-Control-Allow-Headers: заголовки.
CORS
50
Access-Control-Allowed-Origin: null
А что если так?
CORS
51
Access-Control-Allowed-Origin: null
А что если так?
CORS
52
1) Замена значения заголовка Origin
Ладно, что проверять?
53
All-In-one
THANKS!
@igc_iv
Иван Чалыкин

More Related Content

PPTX
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
PDF
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
PPTX
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
PPTX
KazHackStan 2017 | Tracking
PPTX
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
PPT
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
PDF
Реактивный раздатчик ok.ru/music
PPTX
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Татьяна Новикова (Казахстан), ЦАРКА. Как мы мониторим Казнет с помощью WebTotem
Андрей Абакумов (Россия). Yandex.ru. Соавтор: Эльдар Заитов. Автоматизация ск...
Шамбулов У. К. (Казахстан), ГТС. Анализ и исследование инцидентов информацион...
KazHackStan 2017 | Tracking
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Реактивный раздатчик ok.ru/music
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)

What's hot (20)

PPTX
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
PDF
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
PDF
Базы данных. MongoDB
PPTX
Everything you wanted to know about writing async, high-concurrency HTTP apps...
PPT
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
PDF
Доставка данных в реальном времени.
PDF
Консольные приложения на Go
PDF
Анатомия веб сервиса (HighLoad-2014)
ODP
Highload Begun Pankov
PPTX
Periculum est in mora
PDF
Framework Battle: Django vs Flask vs Chalice
PDF
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
PDF
WebSockets
PPT
Major mistakes in site moving
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
PDF
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
PPTX
Браузерные API обмена данными: какие и зачем
PDF
17 - Web-технологии. Real Time сообщения
PDF
Anton Turetckii "What does it take to build a host?"
PDF
Анатомия веб-сервиса (РИТ-2014)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Базы данных. MongoDB
Everything you wanted to know about writing async, high-concurrency HTTP apps...
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
Доставка данных в реальном времени.
Консольные приложения на Go
Анатомия веб сервиса (HighLoad-2014)
Highload Begun Pankov
Periculum est in mora
Framework Battle: Django vs Flask vs Chalice
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
WebSockets
Major mistakes in site moving
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Браузерные API обмена данными: какие и зачем
17 - Web-технологии. Real Time сообщения
Anton Turetckii "What does it take to build a host?"
Анатомия веб-сервиса (РИТ-2014)
Ad

Similar to Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедрения CORS-подобных технологий (20)

PDF
Ihor Bliumental – Is There Life Outside OWASP Top-10
PPT
Информационная безопасность и web-приложения
PPT
Web весна 2013 лекция 11
PPTX
Blackbox-тестирование веб-приложений
PPT
Web осень 2012 лекция 11
PDF
Вячеслав Бирюков - HTTP и HTTPS
PDF
Как превратить приложение в платформу
PPTX
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
PDF
Алексей Андросов "HTML5 в Я.Почте"
PPTX
SOA: строим свой service mesh / Иван Круглов (Booking.com)
PPTX
SOA: Строим свой service mesh
PDF
МАИ, Сети ЭВМ, Лекция №2
PDF
Практическое применение HTML5 в Я.Почте
PPTX
BlackBox testing
PDF
Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"
PDF
Aleksey Androsov
PPT
Web весна 2012 лекция 11
PPT
Catalyst – MVC framework на Perl (RIT 2008)
PPTX
Пост-эксплуатация веб-приложений в тестах на проникновение
PDF
DDoS-атаки: тектонические изменения в 2016-2017 году / Артём Гавриченков (Qra...
Ihor Bliumental – Is There Life Outside OWASP Top-10
Информационная безопасность и web-приложения
Web весна 2013 лекция 11
Blackbox-тестирование веб-приложений
Web осень 2012 лекция 11
Вячеслав Бирюков - HTTP и HTTPS
Как превратить приложение в платформу
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Алексей Андросов "HTML5 в Я.Почте"
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: Строим свой service mesh
МАИ, Сети ЭВМ, Лекция №2
Практическое применение HTML5 в Я.Почте
BlackBox testing
Алексей Андросов "HTML5 в Я.Почте (WebSocket, localStorage, Cross-site XHR)"
Aleksey Androsov
Web весна 2012 лекция 11
Catalyst – MVC framework на Perl (RIT 2008)
Пост-эксплуатация веб-приложений в тестах на проникновение
DDoS-атаки: тектонические изменения в 2016-2017 году / Артём Гавриченков (Qra...
Ad

More from KazHackStan (18)

PPTX
Андрей Масалович (Россия). Корпоративная защита в РК глазами хакера
PDF
Евгений Гончаров (Россия, Казахстан). Автоматизация рутины AD
PPTX
Тимур Юнусов (Россия), Positive Technologies. Уязвимости банкоматов
PPTX
Антон Bo0oM Лопаницын (Россия), OnSec. Трекинг. Как узнать посетителя, если о...
PDF
Омар Ганиев (Россия). Обзор атак на модели машинного обучения
PPTX
Валерий Блонский (Казахстан), PACIFICA. Как угнать Ботнет
PPTX
Ярослав Бабин (Россия), Positive Technologies. Основные аспекты при проведени...
PPTX
Виталий Трахтенберг (Израиль), MER Group. Кейс по кибер-расследованию для одн...
PDF
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
PDF
Батыржан Тютеев (Казахстан), ЦАРКА. Уязвимости Казнета
PDF
Сергей Белов (Россия), Mail.ru. Temple of Bug Bounty: Leveling & Farming
PDF
Максим Ефименко (Казахстан), ЦАРКА. Двойное проникновение
PDF
Сергей Харюк (Украина). Проверка безопасности приложений на платформе iOS
PDF
Ярослав Бабин (Россия), Positive Technologies. Основные аспекты при проведени...
PDF
Ильяс Аринов (Казахстан), ЦАРКА. Linux for newbie hackers
PPTX
Презентация НИТ
PPTX
Дмитрий Кузнецов. Опыт РФ в обеспечении национальной кибербезопасности
PDF
Артём Синицын, Microsoft. Падение Олимпа: как защитить ваш домен Active Direc...
Андрей Масалович (Россия). Корпоративная защита в РК глазами хакера
Евгений Гончаров (Россия, Казахстан). Автоматизация рутины AD
Тимур Юнусов (Россия), Positive Technologies. Уязвимости банкоматов
Антон Bo0oM Лопаницын (Россия), OnSec. Трекинг. Как узнать посетителя, если о...
Омар Ганиев (Россия). Обзор атак на модели машинного обучения
Валерий Блонский (Казахстан), PACIFICA. Как угнать Ботнет
Ярослав Бабин (Россия), Positive Technologies. Основные аспекты при проведени...
Виталий Трахтенберг (Израиль), MER Group. Кейс по кибер-расследованию для одн...
Валерий Боронин (Россия), Positive Technologies. SSDL для руководителей: как ...
Батыржан Тютеев (Казахстан), ЦАРКА. Уязвимости Казнета
Сергей Белов (Россия), Mail.ru. Temple of Bug Bounty: Leveling & Farming
Максим Ефименко (Казахстан), ЦАРКА. Двойное проникновение
Сергей Харюк (Украина). Проверка безопасности приложений на платформе iOS
Ярослав Бабин (Россия), Positive Technologies. Основные аспекты при проведени...
Ильяс Аринов (Казахстан), ЦАРКА. Linux for newbie hackers
Презентация НИТ
Дмитрий Кузнецов. Опыт РФ в обеспечении национальной кибербезопасности
Артём Синицын, Microsoft. Падение Олимпа: как защитить ваш домен Active Direc...

Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедрения CORS-подобных технологий

  • 1. ИВАН ЧАЛЫКИН “Легальный SOP Bypass. Проблемы внедрения CORS-подобных технологий”
  • 7. SOP 7 Same Origin Policy • Scheme • Domain • Port Что можно? • Отправить GET/POST запрос с куками Что нельзя? • Прочитать ответ на запрос
  • 8. SOP 8 Same Origin Policy • Scheme • Domain • Port
  • 9. We need SOP bypass 9 Когда может потребоваться обмен данными разным доменам? Авторизовать пользователя на другом домене «куковый» домен “example.com”, надо дать возможность комментировать и на коротком домене “exam.pl”
  • 10. We need SOP bypass 10 Когда может потребоваться обмен данными разным доменам? Авторизовать пользователя на другом домене «куковый» домен “example.com”, надо дать возможность комментировать и на коротком домене “exam.pl” Разрешить одному поддомену забрать данные с другого “mail.example.com” хочет подгрузить информацию с “disk.example.com”
  • 11. We need SOP bypass 11 Когда может потребоваться обмен данными разным доменам? Авторизовать пользователя на другом домене «куковый» домен “example.com”, надо дать возможность комментировать и на коротком домене “exam.pl” Разрешить одному поддомену забрать данные с другого “mail.example.com” хочет подгрузить информацию с “disk.example.com” Узнать количество лайков в социальной сети “shop.com” хочет показать сколько пользователей “VK.com” дизлайкнули товар
  • 13. JSONP 13 2011 год… • Выходят фильмы: «1+1 Intochables», «Гарри поттер и Дары Смерти II» • 50-летие полета человека в космос • Умирает Стив Джобс • Появляется Internet Explorer 9 - Поддерживает ли IE9 CORS (ajax)? - Нет.
  • 19. JSONP or XSSI 19 - А давайте формировать JS динамически, на основе сессии! - Да, что может пойти не так? Мы разместим там: Cross Site Script Inclusion • Почту пользователя; • Логин, ФИО, день рождения; • Токены CSRF; • Иную чувствительную информацию. Blackhat 2015, ”Your Script in my Page”. Из 150 популярных сайтов 30% оказались так или иначе уязвимы. <script src="http://victim.com/any_script.js"></script>
  • 20. JSONP or XSSI 20 • Есть ли в запросе csrf токен? (лучше всего) • Если токена нет, хотя бы реферер проверяется? (так себе) • Имя callback функции валидируется? (A-Z, a-z, 0-9) • Меняется ли JS в зависимости от сессии? Что-нибудь интересное? Ладно, что проверять?
  • 22. websockets Tunnel arbitrary data • JSON • XML • HTML − images, video, sound • another protocol 22
  • 23. websockets 23 Tunnel arbitrary data • JSON • XML • HTML − images, video, sound • another protocol
  • 26. websockets Аутентификация: • Cookies (идеально хацкеру) • GET param/custom-header token (идеально СИБ) 26 Что можно сделать? • Hijacking (no origin check + cookie auth) • DoS Server via Resource exhaustion (Client declares 2GB length, only contains a few bytes) • Стандартные баги связанные с кавычками
  • 29. websockets • ws:// не бро, wss:// бро • CHECK THE ORIGIN (By default, Socket.IO allows all origins) • CSP “connect-src” ограничит куда можно подключаться • Как всегда: санитайзим пользовательский инпут https://media.blackhat.com/bh-us-12/Briefings/Shekyan/BH_US_12_Shekyan_Toukharian_Hacking_Websocket_Slides.pdf https://www.theseus.fi/bitstream/handle/10024/113390/Harri+Kuosmanen+-+Masters+thesis+-+Security+Testing+of+WebSockets+-+Final.pdf?sequence=1 29 Ладно, что проверять?
  • 31. postMessage Общение между вкладками. Окнами. Айфреймами. 31
  • 32. postMessage Общение между вкладками. Окнами. Айфреймами. 32
  • 33. postMessage Общение между вкладками. Окнами. Айфреймами. 33
  • 39. postMessage 39 Можно посмотреть в: > Chrome Dev Tools > Source > Global Listeners > Message
  • 40. postMessage 40 Можно посмотреть в: > Chrome Dev Tools > Source > Global Listeners > Message postMessage debugger extension:
  • 41. postMessage 41 Отправитель должен проверять, куда шлет: Ладно, что проверять?
  • 42. postMessage 42 Получатель должен проверить, откуда пришли данные: Отправитель должен проверять, куда шлет: Ладно, что проверять?
  • 43. postMessage Плохие примеры 43 ЛастПасс был готов принять месседж от кого угодно. Мессадж попадал в Extension, вызываем LastPass RCP и исполняем код. RCE https://bugs.chromium.org/p/project-zero/issues/detail?id=1209 Slack тоже слушал мессаджи от кого. В итоге была возможность заставить “подключить по WS к вооот такому-то URL, используй собственный токен” LEAK https://labs.detectify.com/2017/02/28/hacking-slack-using-postmessage-and-websocket- reconnect-to-steal-your-precious-token/
  • 46. CORS Основы: 46 GET /token HTTP 1.1 Host: example.com Accept: */* User-Agent: Mozilla/5.0 Origin: https://evil.com Cookie: sessid=139f91391k9 HTTP/1.1 200 OK Server: nginx/1.8.1 Content-Type: application/json Access-Control-Allow-Origin: https://evil.com Access-Control-Allow-Credentials: true {“token”:1337} Но! Access-Control-Allow-Origin: * //если вот так, то куки принудительно отключатся браузером
  • 47. CORS Представим, что на сайте example.com меняется пароль так: 47 PUT /api/v1/user/10012 HTTP 1.1 Host: example.com Accept: */* Origin: https://example.com Content-type: application/json Cookie: JSESSION=367ajm23o19da0 {“password”:”sUp3ers3cr3t!”} HTTP/1.1 200 OK Server: nginx/1.8.1 Content-Type: application/json {“status”:”ok”} CORS на сервере отключен («Access-Contol-Allow-Origin» всегда отсутствует, данные не утекут) - А будет ли тут CSRF на смену пароля?
  • 48. CORS Представим, что на сайте example.com меняется пароль так: 48 PUT /api/v1/user/10012 HTTP 1.1 Host: example.com Accept: */* Origin: https://example.com Content-type: application/json Cookie: JSESSION=367ajm23o19da0 {“password”:”sUp3ers3cr3t!”} HTTP/1.1 200 OK Server: nginx/1.8.1 Content-Type: application/json {“status”:”ok”} CORS на сервере отключен («Access-Contol-Allow-Origin» всегда отсутствует, данные не утекут) - А будет ли тут CSRF на смену пароля? - Нет. Ибо preflight.
  • 49. CORS Prefligh: презапрос для «непростых» реквестов 49 • METHOD != GET || POST || HEAD. • CONTENT-TYPE != application/x-www-form-urlencoded || multipart/form-data ||text/plain • Присутствуют “кастомные” заголовки Method OPTIONS Браузер ожидает: HTTP/1.1 200 OK Access-Control-Allow-Method: методы Access-Control-Allow-Origin: хосты Access-Control-Allow-Headers: заголовки.
  • 52. CORS 52 1) Замена значения заголовка Origin Ладно, что проверять?