Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Ihor Bliumental – Is There Life Outside OWASP Top-10

529 vues

Publié le

OWASP Kyiv 27-05-2017 chapter meeting talk.
Video: https://www.youtube.com/watch?v=O9XPvbs4EQI

Publié dans : Logiciels
  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

Ihor Bliumental – Is There Life Outside OWASP Top-10

  1. 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. 2. OWASP 2 OWASP Top 10 quick overview
  3. 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. 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. 5. OWASP 5 Unsafe CORS - JSONP Для GET запросов можно использовать JSONP • если не передаются чувствительные данные • для чувствительных данных использовать AJAX Для пентестеров: • пробовать подбирать callback-параметр (callback, cb, _cb, jsonp и т.п.)
  6. 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. 7. OWASP 7 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin
  8. 8. OWASP 8 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/
  9. 9. OWASP 9 Unsafe CORS - Access-Control-Allow-Origin Ошибки, приводящие к уязвимости: • Отражение любого Origin • /http(s)://example.com/ -> https://example.com.evil.com

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

  14. 14. OWASP 14 Client side template injections Не всегда нужно пытаться сбегать • в контроллере может быть реализована функция, которая сможет помочь (смена пароля, эл. почты, подтверждение OAuth регистрации и т.п.) Пентестерам • добавить в свои пейлоады выражения типа {{14.6-1.3}}, [[14.6-1.3]] и т.п., а в DOM-дереве документа искать 13.3 • если есть, попытаться выйти из песочницы • не вышло - изучить контроллеры Программистам • стараться не использовать динамику в шаблонах • если невозможно, использовать ng-non-bindable и аналоги
  15. 15. OWASP 15 Server side template injection • Уязвимость возникает, когда пользовательский ввод помещается в шаблон • PortSwigger https://goo.gl/NoKhqe
  16. 16. OWASP 16 Server side template injection Как защищаться? • не передавать пользовательский ввод в шаблон • если это необходимо, использовать простые шаблонизаторы (Mustache) • использовать песочницу (виртуализация через Docker, песочницы средствами языка) Пентестерам • Github: epinna/tplmap; Burp Suit Pro
  17. 17. OWASP 17 Server side request forgery • Возникает, когда пользователь может указать серверу внешний ресурс, куда нужно обратиться • скачивание файлов с других серверов по http • проксирование API • скачивание и загрузка файлов по FTP и т.п. • http://example.com/download?url=http:// example.net/img.jpg
  18. 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. 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. 20. OWASP 20 Unsafe deserialization • Для сохранения состояния объекта их предварительно сериализуют - приводят к набору байтов (строке) • При обратном преобразовании объект создаётся заново, при этом происходит "магия" – вызываются конструкторы и некоторые другие методы • Правильно составленная сериализованная строка может привести к RCE, утечке данных и т.п.
  21. 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. 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. 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. 24. OWASP 24 Unsafe deserialization Пентестерам • держать в голове то, как выглядят серилиазивонные объекты в разных языках. • многие сканеры успешно сигнализируют о таких Программистам • Никогда не десериализировть объекты из недоверенных источников
  25. 25. OWASP 25 Race conditions • Возникает, когда несколько потоков могут изменять с один и тот же объект без блокировки • Возможность записи в один и тот же файл, сокет и т.п. • Изменение финансовых записей без применения транзакций и блокировок (оплата нескольких заказов, многократное применение купонов и т.п.) • Места, где присутствуют 
 ограничения на ресурсы
 (количество пользователей,
 документов и пр.)
 

  26. 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. 27. OWASP 27 Subdomain takeover • Поддомены привязываются к сервисам с помощью A или CNAME записи • Heroku, Github, Amazon S3, Unbounce, Wordpress, Google services etc. • Сервисы перестают использоваться, атакующий регистрирует сервис и добавляет поддомен себе в учётную запись. • Phishing, XSS, обход белых списков. Пентестерам • recon-ng, altdns, cloudflare и т.д.
  28. 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 . • Могут содержать бэкапы, пользовательские данные • Возможно использовать для фишинга, обхода фильтрации
  29. 29. OWASP 29 Вопросы?

×