SlideShare a Scribd company logo
1 of 29
Download to read offline
Copyright © The OWASP Foundation
Permission is granted to copy, distribute and/or modify this document
under the terms of the OWASP License.
The OWASP Foundation
OWASP
http://www.owasp.org
Is there life outside 

OWASP Top-10?


Ihor Bliumental
OWASP Kyiv Chapter Lead
ihor.bliumental@owasp.org
Kyiv

27 May 2017
OWASP 2
OWASP Top 10 quick overview
OWASP 3
Unsafe cross origin resource sharing
Same Origin Policy для XMLHttpRequest
Origin: https://site1.com
Web-

APP
Server – site1.com
Server – site2.com
Browser
https://site1.com
XMLHttp
OWASP 4
Unsafe CORS - JSONP
Для GET запросов можно использовать JSONP
GET /api?callback=func HTTP/1.1
…
HTTP/1.1 200 OK
…
func({“token”:”secret_token”})
OWASP 5
Unsafe CORS - JSONP
Для GET запросов можно использовать JSONP
• если не передаются чувствительные данные
• для чувствительных данных использовать
AJAX
Для пентестеров:
• пробовать подбирать callback-параметр
(callback, cb, _cb, jsonp и т.п.)
OWASP 6
Unsafe CORS - Access-Control-Allow-Origin
• При кросс-доменном AJAX-запросе браузер шлёт запрос с
заголовком Origin
• Если у объекта класса XMLHttpRequest установлено
withCredentials=true, браузер отсылает куки и
сертификаты
• Браузер должен вернуть заголовки. 

Access-Control-Allow-Origin: *

или

Access-Control-Allow-Origin: <origin>

Access-Control-Allow-Credentials: true
• Ещё заголовки

Access-Control-Request-Method

Access-Control-Request-Headers
OWASP 7
Unsafe CORS - Access-Control-Allow-Origin
Ошибки, приводящие к уязвимости:
• Отражение любого Origin
OWASP 8
Unsafe CORS - Access-Control-Allow-Origin
Ошибки, приводящие к уязвимости:
• Отражение любого Origin
• /http(s)://example.com/
OWASP 9
Unsafe CORS - Access-Control-Allow-Origin
Ошибки, приводящие к уязвимости:
• Отражение любого Origin
• /http(s)://example.com/ -> https://example.com.evil.com

OWASP 10
Unsafe CORS - Access-Control-Allow-Origin
Ошибки, приводящие к уязвимости:
• Отражение любого Origin
• /http(s)://example.com/ -> https://example.com.evil.com
• /^http(s)://sub.example.com$/
OWASP 11
Unsafe CORS - Access-Control-Allow-Origin
Ошибки, приводящие к уязвимости:
• Отражение любого Origin
• /http(s)://example.com/ -> https://example.com.evil.com
• /^http(s)://sub.example.com$/ -> https://sub-
example.com

OWASP 12
Unsafe CORS - Access-Control-Allow-Origin
Ошибки, приводящие к уязвимости:
• Отражение любого Origin
• /http(s)://example.com/ -> https://example.com.evil.com
• /^http(s)://sub.example.com$/ -> https://sub-
example.com
• Проверка только http-протокола. Возможность
использовать ftp://evil.com в качестве origin

Необходимо использовать белый список
разрешённых origin'ов
OWASP 13
Client side template injections
• AngularJS, Backbone.js, Ember и т.д.
• представление (view) должно отдаваться статикой
• логика приложения реализована через клиентские
контроллеры, общающиеся с серверным API
• TI возникает при попытке сделать представления
динамичными
• шаблонные выражения чаще всего имеют вид
{{5*5}}, [[5*5]], <%5*5%> и т.п.
• Побег из песочницы -> классический XSS, но не
всегда есть способ сбежать

OWASP 14
Client side template injections
Не всегда нужно пытаться сбегать
• в контроллере может быть реализована функция, которая
сможет помочь (смена пароля, эл. почты, подтверждение
OAuth регистрации и т.п.)
Пентестерам
• добавить в свои пейлоады выражения типа {{14.6-1.3}},
[[14.6-1.3]] и т.п., а в DOM-дереве документа искать 13.3
• если есть, попытаться выйти из песочницы
• не вышло - изучить контроллеры
Программистам
• стараться не использовать динамику в шаблонах
• если невозможно, использовать ng-non-bindable и
аналоги
OWASP 15
Server side template injection
• Уязвимость возникает, когда пользовательский
ввод помещается в шаблон
• PortSwigger https://goo.gl/NoKhqe
OWASP 16
Server side template injection
Как защищаться?
• не передавать пользовательский ввод в
шаблон
• если это необходимо, использовать простые
шаблонизаторы (Mustache)
• использовать песочницу (виртуализация
через Docker, песочницы средствами языка)
Пентестерам
• Github: epinna/tplmap; Burp Suit Pro
OWASP 17
Server side request forgery
• Возникает, когда пользователь может указать
серверу внешний ресурс, куда нужно
обратиться
• скачивание файлов с других серверов по
http
• проксирование API
• скачивание и загрузка файлов по FTP и т.п.
• http://example.com/download?url=http://
example.net/img.jpg
OWASP 18
Server side request forgery
Чем это опасно?
• http://example.com/download?url=http://localhost/
server-status
• http://example.com/download?url=dict://
10.0.1.2:11211/stat
• http://example.com/download?url=http://
169.254.169.254/latest/meta-data/
• http://example.com/download?url=file:///etc/passwd
• 0.0.0.0, [::], http://u:p@evil.com?@example.com/ и
т.д.
• DNS rebinding
OWASP 19
Server side request forgery
Предположим, что мы сделали белый список доменов и протоколов
• http://example.com/download?url=http://evil.com/?redirect=file:///etc/
passwd
Пентестерам
• разобраться в типе фильтрации, в случае отсутствия белого списка
пробовать обходы
• использовать open redirects
• Программистам
• использовать белые списки
• не следовать за перенаправлениями, но если необходимо, то
проверять каждый новый URL
• использовать готовые решения. Для PHP: fin1te/safecurl
OWASP 20
Unsafe deserialization
• Для сохранения состояния объекта их
предварительно сериализуют - приводят к
набору байтов (строке)
• При обратном преобразовании объект
создаётся заново, при этом происходит
"магия" – вызываются конструкторы и
некоторые другие методы
• Правильно составленная сериализованная
строка может привести к RCE, утечке данных и
т.п.
OWASP 21
Unsafe deserialization
JAVA
• "Волшебные байты" 0xAC 0xED (base64: rO0)
• Могут находиться в HTTP запросах (Cookie,
параметры и т.д.), Java RMI протокол, RMI over
HTTP
• XStream - сериализация в XML. Позволяет
сериализовать даже несериализуемые классы.
• Очень подробный cheat shit на Github: GrrrDog/
Java-Deserialization-Cheat-Sheet
OWASP 22
Unsafe deserialization
PHP
• Пример объекта:
O:3:"foo":2:{s:4:"file";s:9:"shell.php";s:4:"data";s:
5:"aaaa";}
• После десериализации вызываются методы
__wakeup() и __destruct()
• При наличии исходного кода, можно найти классы,
содержащие опасный код в этих методах
• CVE-2014-8142 и CVE-2015-0231 (<5.4.36, <5.5.20,
<5.6.4)
• https://www.owasp.org/index.php/PHP_Object_Injection
OWASP 23
Unsafe deserialization
Ruby
• Процессор для YAML объектов.
• CVE-2013-0156 RoR <3.2.11, <3.1.10, <3.0.19,
<2.3.15
Python
• Python pickle
• YAML
OWASP 24
Unsafe deserialization
Пентестерам
• держать в голове то, как выглядят
серилиазивонные объекты в разных языках.
• многие сканеры успешно сигнализируют о
таких
Программистам
• Никогда не десериализировть объекты из
недоверенных источников
OWASP 25
Race conditions
• Возникает, когда несколько потоков могут изменять с
один и тот же объект без блокировки
• Возможность записи в один и тот же файл, сокет и т.п.
• Изменение финансовых записей без применения
транзакций и блокировок (оплата нескольких заказов,
многократное применение купонов и т.п.)
• Места, где присутствуют 

ограничения на ресурсы

(количество пользователей,

документов и пр.)



OWASP 26
Race conditions
Пентестерам
• Burp Suit Pro -> Intruder -> Null payload
• Bash script: 

#!/bin/bash

curl http://example.com/1 & 

curl http://example.com/2 &
Программистам
• ACID – Atomicity, Consistency, Isolation, Durability
(Атомарность, Согласованность,
Изолированность, Устойчивость).

OWASP 27
Subdomain takeover
• Поддомены привязываются к сервисам с
помощью A или CNAME записи
• Heroku, Github, Amazon S3, Unbounce,
Wordpress, Google services etc.
• Сервисы перестают использоваться, атакующий
регистрирует сервис и добавляет поддомен
себе в учётную запись.
• Phishing, XSS, обход белых списков.
Пентестерам
• recon-ng, altdns, cloudflare и т.д.
OWASP 28
AWS s3 buckets
• Amazon s3 bucket позволяет хранить и
отдавать статические файлы



aws s3 ls s3://bucket-name

aws s3 mv test.txt s3://bucket-name

aws s3 sync s3://bucket-name/path .
• Могут содержать бэкапы, пользовательские
данные
• Возможно использовать для фишинга, обхода
фильтрации
OWASP 29
Вопросы?

More Related Content

What's hot

Кухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановки
Кухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановкиКухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановки
Кухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановки
NaZapad
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014
it-people
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxss
yaevents
 
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
 

What's hot (20)

Authentication security
Authentication securityAuthentication security
Authentication security
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Кухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановки
Кухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановкиКухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановки
Кухня создания PBN: От поиска доменов, сетапа сайтов, до тестов и простановки
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
 
SEO-Friendly Websites
SEO-Friendly WebsitesSEO-Friendly Websites
SEO-Friendly Websites
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014А.Могильников "Специализированные облака", DUMP-2014
А.Могильников "Специализированные облака", DUMP-2014
 
SQADays19 - 50 Слайдов для повышения безопасности вашего сервиса
SQADays19 - 50 Слайдов для повышения безопасности вашего сервисаSQADays19 - 50 Слайдов для повышения безопасности вашего сервиса
SQADays19 - 50 Слайдов для повышения безопасности вашего сервиса
 
Securing Rails Applications
Securing Rails ApplicationsSecuring Rails Applications
Securing Rails Applications
 
Svyatoslav Login
Svyatoslav LoginSvyatoslav Login
Svyatoslav Login
 
Скорость работы интернет магазина
Скорость работы интернет магазинаСкорость работы интернет магазина
Скорость работы интернет магазина
 
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
 
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"
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"Алексей Захаров "Архитектура Яндекс.Фоток"
Алексей Захаров "Архитектура Яндекс.Фоток"
 
Coding monday
Coding mondayCoding monday
Coding monday
 

Similar to Ihor Bliumental – Is There Life Outside OWASP Top-10

PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
BlackFan
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кода
corehard_by
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
Yandex
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Ontico
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
Yandex
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
lshevtsov
 
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Ontico
 
Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, Ajax
Yandex
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновение
beched
 
Методы обхода Web Application Firewall
Методы обхода Web Application FirewallМетоды обхода Web Application Firewall
Методы обхода Web Application Firewall
Dmitry Evteev
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 

Similar to Ihor Bliumental – Is There Life Outside OWASP Top-10 (20)

Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
Иван Чалыкин (Россия), Digital Security. Легальный SOP Bypass. Проблемы внедр...
 
Blackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложенийBlackbox-тестирование веб-приложений
Blackbox-тестирование веб-приложений
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кода
 
Поиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кодаПоиск уязвимостей с использованием статического анализа кода
Поиск уязвимостей с использованием статического анализа кода
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
 
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, Ajax
 
Пост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновениеПост-эксплуатация веб-приложений в тестах на проникновение
Пост-эксплуатация веб-приложений в тестах на проникновение
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"
 
Методы обхода Web Application Firewall
Методы обхода Web Application FirewallМетоды обхода Web Application Firewall
Методы обхода Web Application Firewall
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 

More from OWASP Kyiv

Software Supply Chain Security та компоненти з відомими вразливостями
Software Supply Chain Security та компоненти з відомими вразливостямиSoftware Supply Chain Security та компоненти з відомими вразливостями
Software Supply Chain Security та компоненти з відомими вразливостями
OWASP Kyiv
 
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout SuiteCloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
OWASP Kyiv
 

More from OWASP Kyiv (20)

Is there a penetration testing within PCI DSS certification? (Dmytro Diordiyc...
Is there a penetration testing within PCI DSS certification? (Dmytro Diordiyc...Is there a penetration testing within PCI DSS certification? (Dmytro Diordiyc...
Is there a penetration testing within PCI DSS certification? (Dmytro Diordiyc...
 
Software Supply Chain Security та компоненти з відомими вразливостями
Software Supply Chain Security та компоненти з відомими вразливостямиSoftware Supply Chain Security та компоненти з відомими вразливостями
Software Supply Chain Security та компоненти з відомими вразливостями
 
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout SuiteCloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
 
Threat Modeling with OWASP Threat Dragon
Threat Modeling with OWASP Threat DragonThreat Modeling with OWASP Threat Dragon
Threat Modeling with OWASP Threat Dragon
 
Anastasia Vixentael - Don't Waste Time on Learning Cryptography: Better Use I...
Anastasia Vixentael - Don't Waste Time on Learning Cryptography: Better Use I...Anastasia Vixentael - Don't Waste Time on Learning Cryptography: Better Use I...
Anastasia Vixentael - Don't Waste Time on Learning Cryptography: Better Use I...
 
Vlad Styran - Cyber Security Economics 101
Vlad Styran - Cyber Security Economics 101Vlad Styran - Cyber Security Economics 101
Vlad Styran - Cyber Security Economics 101
 
Pavlo Radchuk - OWASP SAMM: Understanding Agile in Security
Pavlo Radchuk - OWASP SAMM: Understanding Agile in SecurityPavlo Radchuk - OWASP SAMM: Understanding Agile in Security
Pavlo Radchuk - OWASP SAMM: Understanding Agile in Security
 
Ivan Vyshnevskyi - Not So Quiet Git Push
Ivan Vyshnevskyi - Not So Quiet Git PushIvan Vyshnevskyi - Not So Quiet Git Push
Ivan Vyshnevskyi - Not So Quiet Git Push
 
Dima Kovalenko - Modern SSL Pinning
Dima Kovalenko - Modern SSL PinningDima Kovalenko - Modern SSL Pinning
Dima Kovalenko - Modern SSL Pinning
 
Yevhen Teleshyk - OAuth Phishing
Yevhen Teleshyk - OAuth PhishingYevhen Teleshyk - OAuth Phishing
Yevhen Teleshyk - OAuth Phishing
 
Vlada Kulish - Why So Serial?
Vlada Kulish - Why So Serial?Vlada Kulish - Why So Serial?
Vlada Kulish - Why So Serial?
 
Vlad Styran - OWASP Kyiv 2017 Report and 2018 Plans
Vlad Styran - OWASP Kyiv 2017 Report and 2018 PlansVlad Styran - OWASP Kyiv 2017 Report and 2018 Plans
Vlad Styran - OWASP Kyiv 2017 Report and 2018 Plans
 
Roman Borodin - ISC2 & ISACA Certification Programs First-hand Experience
Roman Borodin - ISC2 & ISACA Certification Programs First-hand ExperienceRoman Borodin - ISC2 & ISACA Certification Programs First-hand Experience
Roman Borodin - ISC2 & ISACA Certification Programs First-hand Experience
 
Ihor Bliumental - WebSockets
Ihor Bliumental - WebSocketsIhor Bliumental - WebSockets
Ihor Bliumental - WebSockets
 
Serhiy Korolenko - The Strength of Ukrainian Users’ P@ssw0rds2017
Serhiy Korolenko - The Strength of Ukrainian Users’ P@ssw0rds2017Serhiy Korolenko - The Strength of Ukrainian Users’ P@ssw0rds2017
Serhiy Korolenko - The Strength of Ukrainian Users’ P@ssw0rds2017
 
Viktor Zhora - Cyber and Geopolitics: Ukrainian factor
Viktor Zhora - Cyber and Geopolitics: Ukrainian factorViktor Zhora - Cyber and Geopolitics: Ukrainian factor
Viktor Zhora - Cyber and Geopolitics: Ukrainian factor
 
Andriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsAndriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tips
 
Vlad Styran - "Hidden" Features of the Tools We All Love
Vlad Styran - "Hidden" Features of the Tools We All LoveVlad Styran - "Hidden" Features of the Tools We All Love
Vlad Styran - "Hidden" Features of the Tools We All Love
 
Volodymyr Ilibman - Close Look at Nyetya Investigation
Volodymyr Ilibman - Close Look at Nyetya InvestigationVolodymyr Ilibman - Close Look at Nyetya Investigation
Volodymyr Ilibman - Close Look at Nyetya Investigation
 
Lidiia 'Alice' Skalytska - Security Checklist for Web Developers
Lidiia 'Alice' Skalytska - Security Checklist for Web DevelopersLidiia 'Alice' Skalytska - Security Checklist for Web Developers
Lidiia 'Alice' Skalytska - Security Checklist for Web Developers
 

Ihor Bliumental – Is There Life Outside OWASP Top-10

  • 1. Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP Foundation OWASP http://www.owasp.org Is there life outside 
 OWASP Top-10? 
 Ihor Bliumental OWASP Kyiv Chapter Lead ihor.bliumental@owasp.org Kyiv
 27 May 2017
  • 2. OWASP 2 OWASP Top 10 quick overview
  • 3. OWASP 3 Unsafe cross origin resource sharing Same Origin Policy для XMLHttpRequest Origin: https://site1.com Web-
 APP Server – site1.com Server – site2.com Browser https://site1.com XMLHttp
  • 4. OWASP 4 Unsafe CORS - JSONP Для GET запросов можно использовать JSONP GET /api?callback=func HTTP/1.1 … HTTP/1.1 200 OK … func({“token”:”secret_token”})
  • 5. OWASP 5 Unsafe CORS - JSONP Для GET запросов можно использовать JSONP • если не передаются чувствительные данные • для чувствительных данных использовать AJAX Для пентестеров: • пробовать подбирать callback-параметр (callback, cb, _cb, jsonp и т.п.)
  • 6. OWASP 6 Unsafe CORS - Access-Control-Allow-Origin • При кросс-доменном AJAX-запросе браузер шлёт запрос с заголовком Origin • Если у объекта класса XMLHttpRequest установлено withCredentials=true, браузер отсылает куки и сертификаты • Браузер должен вернуть заголовки. 
 Access-Control-Allow-Origin: *
 или
 Access-Control-Allow-Origin: <origin>
 Access-Control-Allow-Credentials: true • Ещё заголовки
 Access-Control-Request-Method
 Access-Control-Request-Headers
  • 7. OWASP 7 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin
  • 8. OWASP 8 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/
  • 9. OWASP 9 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/ -> https://example.com.evil.com

  • 10. OWASP 10 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/ -> https://example.com.evil.com • /^http(s)://sub.example.com$/
  • 11. OWASP 11 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/ -> https://example.com.evil.com • /^http(s)://sub.example.com$/ -> https://sub- example.com

  • 12. OWASP 12 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/ -> https://example.com.evil.com • /^http(s)://sub.example.com$/ -> https://sub- example.com • Проверка только http-протокола. Возможность использовать ftp://evil.com в качестве origin
 Необходимо использовать белый список разрешённых origin'ов
  • 13. OWASP 13 Client side template injections • AngularJS, Backbone.js, Ember и т.д. • представление (view) должно отдаваться статикой • логика приложения реализована через клиентские контроллеры, общающиеся с серверным API • TI возникает при попытке сделать представления динамичными • шаблонные выражения чаще всего имеют вид {{5*5}}, [[5*5]], <%5*5%> и т.п. • Побег из песочницы -> классический XSS, но не всегда есть способ сбежать

  • 14. OWASP 14 Client side template injections Не всегда нужно пытаться сбегать • в контроллере может быть реализована функция, которая сможет помочь (смена пароля, эл. почты, подтверждение OAuth регистрации и т.п.) Пентестерам • добавить в свои пейлоады выражения типа {{14.6-1.3}}, [[14.6-1.3]] и т.п., а в DOM-дереве документа искать 13.3 • если есть, попытаться выйти из песочницы • не вышло - изучить контроллеры Программистам • стараться не использовать динамику в шаблонах • если невозможно, использовать ng-non-bindable и аналоги
  • 15. OWASP 15 Server side template injection • Уязвимость возникает, когда пользовательский ввод помещается в шаблон • PortSwigger https://goo.gl/NoKhqe
  • 16. OWASP 16 Server side template injection Как защищаться? • не передавать пользовательский ввод в шаблон • если это необходимо, использовать простые шаблонизаторы (Mustache) • использовать песочницу (виртуализация через Docker, песочницы средствами языка) Пентестерам • Github: epinna/tplmap; Burp Suit Pro
  • 17. OWASP 17 Server side request forgery • Возникает, когда пользователь может указать серверу внешний ресурс, куда нужно обратиться • скачивание файлов с других серверов по http • проксирование API • скачивание и загрузка файлов по FTP и т.п. • http://example.com/download?url=http:// example.net/img.jpg
  • 18. OWASP 18 Server side request forgery Чем это опасно? • http://example.com/download?url=http://localhost/ server-status • http://example.com/download?url=dict:// 10.0.1.2:11211/stat • http://example.com/download?url=http:// 169.254.169.254/latest/meta-data/ • http://example.com/download?url=file:///etc/passwd • 0.0.0.0, [::], http://u:p@evil.com?@example.com/ и т.д. • DNS rebinding
  • 19. OWASP 19 Server side request forgery Предположим, что мы сделали белый список доменов и протоколов • http://example.com/download?url=http://evil.com/?redirect=file:///etc/ passwd Пентестерам • разобраться в типе фильтрации, в случае отсутствия белого списка пробовать обходы • использовать open redirects • Программистам • использовать белые списки • не следовать за перенаправлениями, но если необходимо, то проверять каждый новый URL • использовать готовые решения. Для PHP: fin1te/safecurl
  • 20. OWASP 20 Unsafe deserialization • Для сохранения состояния объекта их предварительно сериализуют - приводят к набору байтов (строке) • При обратном преобразовании объект создаётся заново, при этом происходит "магия" – вызываются конструкторы и некоторые другие методы • Правильно составленная сериализованная строка может привести к RCE, утечке данных и т.п.
  • 21. OWASP 21 Unsafe deserialization JAVA • "Волшебные байты" 0xAC 0xED (base64: rO0) • Могут находиться в HTTP запросах (Cookie, параметры и т.д.), Java RMI протокол, RMI over HTTP • XStream - сериализация в XML. Позволяет сериализовать даже несериализуемые классы. • Очень подробный cheat shit на Github: GrrrDog/ Java-Deserialization-Cheat-Sheet
  • 22. OWASP 22 Unsafe deserialization PHP • Пример объекта: O:3:"foo":2:{s:4:"file";s:9:"shell.php";s:4:"data";s: 5:"aaaa";} • После десериализации вызываются методы __wakeup() и __destruct() • При наличии исходного кода, можно найти классы, содержащие опасный код в этих методах • CVE-2014-8142 и CVE-2015-0231 (<5.4.36, <5.5.20, <5.6.4) • https://www.owasp.org/index.php/PHP_Object_Injection
  • 23. OWASP 23 Unsafe deserialization Ruby • Процессор для YAML объектов. • CVE-2013-0156 RoR <3.2.11, <3.1.10, <3.0.19, <2.3.15 Python • Python pickle • YAML
  • 24. OWASP 24 Unsafe deserialization Пентестерам • держать в голове то, как выглядят серилиазивонные объекты в разных языках. • многие сканеры успешно сигнализируют о таких Программистам • Никогда не десериализировть объекты из недоверенных источников
  • 25. OWASP 25 Race conditions • Возникает, когда несколько потоков могут изменять с один и тот же объект без блокировки • Возможность записи в один и тот же файл, сокет и т.п. • Изменение финансовых записей без применения транзакций и блокировок (оплата нескольких заказов, многократное применение купонов и т.п.) • Места, где присутствуют 
 ограничения на ресурсы
 (количество пользователей,
 документов и пр.)
 

  • 26. OWASP 26 Race conditions Пентестерам • Burp Suit Pro -> Intruder -> Null payload • Bash script: 
 #!/bin/bash
 curl http://example.com/1 & 
 curl http://example.com/2 & Программистам • ACID – Atomicity, Consistency, Isolation, Durability (Атомарность, Согласованность, Изолированность, Устойчивость).

  • 27. OWASP 27 Subdomain takeover • Поддомены привязываются к сервисам с помощью A или CNAME записи • Heroku, Github, Amazon S3, Unbounce, Wordpress, Google services etc. • Сервисы перестают использоваться, атакующий регистрирует сервис и добавляет поддомен себе в учётную запись. • Phishing, XSS, обход белых списков. Пентестерам • recon-ng, altdns, cloudflare и т.д.
  • 28. OWASP 28 AWS s3 buckets • Amazon s3 bucket позволяет хранить и отдавать статические файлы
 
 aws s3 ls s3://bucket-name
 aws s3 mv test.txt s3://bucket-name
 aws s3 sync s3://bucket-name/path . • Могут содержать бэкапы, пользовательские данные • Возможно использовать для фишинга, обхода фильтрации