Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Ihor Bliumental – Is There Life Outside OWASP Top-10

532 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Software
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

  • Gehören Sie zu den Ersten, denen das gefällt!

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 Вопросы?

×