Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Тестирование уязвимостей веб приложений

4,203 views

Published on

Доклад Константина Заварова на конференции SQA Days-19, 20-21 мая 2016 г., Санкт-Петербург

Published in: Education
  • Be the first to comment

Тестирование уязвимостей веб приложений

  1. 1. 50 слайдов для повышения безопасности вашего сервиса Константин Заваров
  2. 2. «Либо ты сам себя проверишь, либо тебя проверят» СБ
  3. 3. Публикаций в мес. на Wooyun и HackerOne The Pennsylvania State University - www.psu.edu
  4. 4. Высокий приоритет ~ 50% The Pennsylvania State University - www.psu.edu
  5. 5. Сфера деятельности значения не имеет, размер имеет значение The Pennsylvania State University - www.psu.edu
  6. 6. • PR - ущерб Финансовые потери Снижение доверия клиентов
  7. 7. QA
  8. 8. QA vs Dev
  9. 9. Компоненты web-приложения Клиент Сервер БД запрос запрос ответответ XSS SQL Inj
  10. 10. Top-3 атак The Pennsylvania State University - www.psu.edu
  11. 11. Что будем тестировать? • Входящие данные от пользователя • Ответы сервера • Защиту от перебора • Безопасные механизмы аутентификации • Работа с пользовательскими сессиями • Шифрование трафика
  12. 12. Some Origin Policy Код из одного источника не может читать или изменять DOM-объекты другого источника
  13. 13. Some Origin Policy «Свой локоть укусить нельзя. Но есть способ укусить, используя соседскую собачку»
  14. 14. Лабораторные примеры
  15. 15. Межсайтовая подделка запроса (CSRF) GOOD SITE Сервер запрос ответ BAD SITE тайный запрос
  16. 16. CSRF video example
  17. 17. Межсайтовая подделка запроса (CSRF)
  18. 18. CSRF : Векторы атаки Выполнение каких-либо действий на уязвимом сайте от лица жертвы
  19. 19. BruteForce
  20. 20. Отправка кода по СМС/ email Сложно ли подобрать 4х символьный цифровой СМС-код?
  21. 21. BruteForce 2016-05-16 14:48:53 2016-05-16 14:57:41 Code is - 3845; password: new_password)
  22. 22. “Ленивый” SSL
  23. 23. “Ленивый” SSL
  24. 24. “Ленивый” SSL
  25. 25. Man-in-the-middle - перехват информации, передаваемой по незащищенному каналу связи Векторы атаки X
  26. 26. Injections Контекст команд Контекст данных
  27. 27. Injections (Content Spoofing)
  28. 28. Cross-Site Scripting
  29. 29. Cross-Site Scripting
  30. 30. Cross-Site Scripting
  31. 31. Cross-Site Scripting XSS позволяет делать с уязвимым сайтом то же самое, что может делать пользователь загрузивший XSS скрипт Например, с помощью BеEF или Metasploit
  32. 32. Open Redirect (URL Redirector Abuse )
  33. 33. Clickjacking
  34. 34. Clickjacking callbackhunter, onlineconsultant, social plugins, …
  35. 35. Рекомендации – это еще один повод подумать
  36. 36. Понимание всех точек аутентификации • ВСЕ формы аутентификации • Аутентификация пользователей моб. приложений
  37. 37. Шифрование трафика • ВСЕ важнейшие страницы используют HTTPS • Используем HTTP-header Strict-Transport- Security: max-age=31536000; Для параноиков: www.chromium.org/hsts • Трафик мобильного приложения шифруются по HTTPS • Надежный SSL сертификат (проверяем, например, здесь - www.ssllabs.com/ssltest/ )
  38. 38. Шифрование трафика
  39. 39. Защита от перебора Что проверяем? • Форму аутентификации • Форму регистрации • Восстановление пароля • Изменение данных в ЛК
  40. 40. Защита от перебора • Запрещаем вводить слабые пароли (https://github.com/dropbox/zxcvbn - это поможет) • Не даем подсказок. Только общие фразы: “Неверный логин или пароль” “Ссылка отправлена на ваш email” / “Код - на телефон” • Captcha, например, Google ReCaptcha после 3-5 попыток (www.free-ocr.com) • Timeout после 13-15 попыток • Проверяем, учитывается ли значение капчи в POST запросе • Код ответа HTTP = 200 • Логируем все попытки аутентификации (время; IP; учетка; результа; …)
  41. 41. Защищаем поля ввода • Проверяем на инъекции (XSS magic string - ‘';!-- "<XSS>=&{()}) • Все поля ввода валидируются на сервере • Используем HTTP header Cache-Control: private, no-cache, no-store, max-age=0
  42. 42. Восстановление пароля (Capability URLs) • URL содержит уникальный токен (рекомендуется, UUID) • UUID не должен генерироваться детерминированным способом типа md5(username) • UUID имеет ограниченный срок действия (максимум, сутки) • UUID Не действует после сброса пароля • URL работает только по HTTPS • Страницы доступные через URL должны быть закрыты от индексации роботами https://w3ctag.github.io/capability-urls/
  43. 43. Изменение аутентификационных данных в ЛК • Используем анти-CSRF токен в POST запросах (не GET), который обрабатывается на сервере • Один анти-CSRF токен действует только для одного пользователя • При изменении пароля повторяем механизм восстановления пароля
  44. 44. Защита от clickjacking • Ответ сервера содержит заголовок X-Frame-Options Deny на страницах, не предназначенных для запуска во фреймах • Используются ли сторонние сервисы/ плагины? Разбираемся, как они работают.
  45. 45. Injections • SQL: используем сканеры, например, sqlmap • XSS: используем сканеры, например, OWASP Xenotix
  46. 46. Дополнительная защита от XSS • Ответ сервера содержит заголовок Content-Security-Policy: script-src ‘self' • Ответ сервера содержит заголовок Set-Cookie: … ; secure; HttpOnly • Ответ сервера содержит заголовок X-XSS-Protection: 1; mode=block • Ответ сервера содержит заголовок x-content-type-options:nosniff www.securityheaders.io
  47. 47. 1. OWASP Authentication Cheat Sheet (https://www.owasp.org/index.php/Authentication_Cheat_She et) 2. Dos and Don’ts of Client Authentication on the Web (https://pdos.csail.mit.edu/papers/webauth:sec10.pdf) 3. http://www.webappsec.org 4. http://seclists.org 5. https://www.seekurity.com 6. http://hackerone.com Что почитать?
  48. 48. ext_zavarov@kaspersky.com facebook.com/zavarovkv +7 968 6120490 Вопросы?

×