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.

Безопасность сессий в веб-приложениях: практическое применение

5,956 views

Published on

Доклад Екатерины Овеченко на SQA Days-15. 18-19 апреля, 2014, Москва.
www.sqadays.com

Published in: Education
  • Be the first to comment

Безопасность сессий в веб-приложениях: практическое применение

  1. 1. Безопасность сессий в веб- приложении: практическое применение Катерина Овеченко. Itera Consulting
  2. 2. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014 / 2
  3. 3. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014 / 4
  4. 4. Что такое веб-сессия? “HTTP - это протокол без состояний. Сессии решают эту проблему.” Веб-сессия – это структура данных конкретного пользователя, которую приложение использует для хранения временных данных, полезных только в течение того времени, которое пользователь взаимодействует с приложением. 4/20/2014 / 5
  5. 5. Атрибуты сессии • ID сессии – это уникальный ID, используемый для идентификации пользователя при обмене запросами между клиентом и сервером. Например: PHPSESSID=a2pdlk7jreml0u1m3bccd12551; • Время действия (Expiry date) – это время окончания сессии. Может иметь такие параметры:  Фиксированное время после авторизации  Фиксированное время после каждого нового запроса  Закрытие браузера  Выход из приложения (logout)  Никогда  Дополнительная авторизация на какое-то действие Например: EXPIRES 18.03.2014 16:52:22 4/20/2014 / 6
  6. 6. Передача ID сессии 4/20/2014 / 7 • http://www.example.com/index.php?PHPSESSID=a2pdlk7jre ml0u1m3bccd12551 • http://www.example.com/s(lit3py55t21z5v55vlm 25s55)/orderform.aspx В URL адресе • Session-token: SID=lit3py55t21z5v55vlm25s55 • Cookies: PHPSESSID=a2pdlk7jreml0u13bccd12551 В поле заголовка запроса (header) • Login=Username&password=Password& SessionID=12345678 В теле POST запроса
  7. 7. Хранение ID сессии 4/20/2014 / 8 В cookies браузера Скрытое поле (HTML код) • ID сессии может храниться в исходном коде самого приложения на клиентской стороне во время работы пользователя с приложением. В самом приложении <form method="post" action="url"> <input type="hidden" name="sessionid" value="1111"> ... <input type="submit"> </form>
  8. 8. Немного статистики… • "64% разработчиков не уверены в безопасности приложений, которые они создают“. (Microsoft Developer Research) • "60% всех атак в Интернете направлены на взлом веб-приложений“. (Gartner) • "Атаки на сессии пользователей и обход системы аутентификации занимают 2ое место в TOP-10 уязвимостей." (OWASP) 4/20/2014 / 9
  9. 9. Когда тестировать сессии? Приложение с веб доступом Приложение используется большим количеством пользователей (внутренних и/или внешних) Приложение содержит важные персональные данные пользователей Пользователи в приложении имеет разные уровни доступа Приложение интегрируется с системой, которая содержит критические данные 4/20/2014/ 10
  10. 10. Последствия Последствия удачной атаки напрямую зависят от того уровня доступа и данных, которыми обладает жертва в веб-приложении. 4/20/2014/ 11 Финансовые убытки Нарушение конфиденциальности Разрушение репутации
  11. 11. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014/ 12
  12. 12. Session Hijacking Есть несколько способов получения уникального идентификатора сессии: • Предсказание идентификатора • Сниффинг (Sniffing); • Атака клиентской части (XSS, вредоносный JavaScript код, трояны, etc); 4/20/2014/ 13
  13. 13. Предсказуемые токены Анализ ID сессии на предсказуемость можно делать вручную или с помощью специальных инструментов. На что обратить внимание: • Имя пользователя / логин • Пароль • IP адрес • Время авторизации 4/20/2014/ 14
  14. 14. Инструменты анализа Инструменты анализа ID сессии: • Burp Sequencer анализирует распредление ID сесиий для определния уровня случайности. • SessionID Analysis - модуль WebScarab, позволяющий определить уровень случайности сгенерированных ID сессий. • Crowbar - инструмент для брут-форса ID сессий. 4/20/2014/ 15
  15. 15. Предсказуемые токены. Пример 4/20/2014/ 16 Логин Пароль ID сессии - время Webgoat Test123 65432ubphcfx 10/7/2005-10:10 65432ubphcfx 10/7/2005-10:11 Aspect 987654qwerty 65432udfqtb 10/7/2005-10:12 65432udfqtb 10/7/2005-10:13 alice Alice ????
  16. 16. Предсказуемые токены. Пример 4/20/2014/ 17 Логин Пароль ID сессии - время Webgoat Test123 65432ubphcfx 10/7/2005-10:10 65432ubphcfx 10/7/2005-10:11 Aspect 987654qwerty 65432udfqtb 10/7/2005-10:12 65432udfqtb 10/7/2005-10:13 alice Alice ????
  17. 17. Предсказуемые токены. Пример 4/20/2014/ 18 Логин Пароль ID сессии - время Webgoat Test123 65432ubphcfx Aspect 987654qwerty 65432udfqtb alice Alice ????
  18. 18. Предсказуемые токены. Пример 4/20/2014/ 19 Логин Пароль ID сессии - время Webgoat Test123 65432ubphcfx Aspect 987654qwerty 65432udfqtb alice Alice ???? W – x e – f b – с g – h o – p a – b t – u = xfchpbu A – b s – t p – q e – f с – d t – u = btqfdu
  19. 19. Предсказуемые токены. Пример 4/20/2014/ 20 Логин Пароль ID сессии - время Webgoat Test123 65432ubphcfx Aspect 987654qwerty 65432udfqtb alice Alice A – b l – m i – j c – d e – f = bmjdf 65432fdjmb
  20. 20. Предсказуемые токены. Пример 4/20/2014/ 21
  21. 21. Предсказуемые токены. Пример 4/20/2014/ 22 Burp - Sequencer OWASP WebScarab SessionID Analyser
  22. 22. Сниффинг Сниффинг – это атака направленная на перехват сетевых пакетов в сети используя сниффинг инструменты, снифферы. При этом злоумышленник и жертва должны находиться в одной подсети. Как только пакет перехвачен, его содержимое может быть проанализировано. Таким образом, возможно перехватить ID сессий, передаваемые в URL или заголовке запроса. 4/20/2014/ 23
  23. 23. Сниффинг Инструменты для перехвата сетевого трафика: • Wireshark • Microsoft Network Monitor • CommView for WiFi 4/20/2014/ 24 Wireshark
  24. 24. Атака клиентской части Злоумышленник может получить ID сессии используя вредоносный код или программу, которая будет выполнятся на стороне пользователя (жертвы). Самый распространенный пример – Cross-Site Scripting (XSS) атака. 4/20/2014/ 25 Пример: <SCRIPT>alert(document.cookie);</SCRIPT>
  25. 25. Session Hijacking. Примеры 4/20/2014/ 26
  26. 26. Session Hijacking. Контрмеры • Завершение сеанса (logout) и закрытие браузера должны закрывать сессию. • Дополнительный токен: отпечаток браузера (хэшированный User-agent) или другой уникальный токен • Дополнительный токен должен передаваться другим способом, чем ID сессии. • Запретить одновременную работу под одной сессией с нескольких агентов • Шифрование данных передаваемых по сети (https протокол). • Генерировать ID сессий сложно предсказуемыми 4/20/2014/ 27
  27. 27. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014/ 28
  28. 28. Session Fixation Вместо того, чтобы воровать ID сессии пользователя, злоумышленник может зафиксировать ID сессии известный ему и передать его пользователю. Этот тип атаки называется фиксирование сессии. 4/20/2014/ 29 Инструменты для перехвата запросов: • OWASP WebScarab • Fiddler
  29. 29. Session Fixation. Примеры 4/20/2014/ 30
  30. 30. Session Fixation. Контрмеры • Присваивать новый ID сессии после авторизации • Проверять дополнительные параметры при авторизации пользователя, например IP или User-Agent • Реализовать в приложении механизм Анти-фиксации сессии • Запретить одновременную работу под одной сессией с нескольких агентов • Запрашивать авторизацию при изменении уровня доступа пользователя 4/20/2014/ 31
  31. 31. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014/ 32
  32. 32. Cross-Site Request Forgery Подделка межсайтовых запросов (Cross-Site Request Forgery) занимает 8ое место среди TOP-10 уязвимостей по версии Open Web-Application Security Project (OWASP). Атака является успешной, если жертва авторизована в приложении. 4/20/2014/ 33
  33. 33. CSRF. Примеры 4/20/2014/ 34 Добавление видео в watch-later список https://player.vimeo.com/watch_later/ID?callback=cb& status=1 Выставлять рейтинги фильмам http://www.kinopoisk.ru/vote.php?film=FILM_ID&film_ vote=VOTE_VALUE Удаление презентации через GET запрос http://www.slideshare.net/main/delete/PRESENTATION ID?ajax=false&redirect=mypage Добавлять дополнительный e-mail в Facebook document.submit('<form method="post" action= "http://m.face- book.com/a/settings.php?refid=31&__ajax__&__m_async_page_ _"> <input type="hidden" name="email" value="test@example.com"/></form>')
  34. 34. CSRF. Контрмеры Разработчикам: • Использовать анти-CSRF токен • Хранить и передавать анти-CSRF токен другим способом, чем ID сессии (скрытое поле формы, в теле POST запроса) 4/20/2014/ 35 POST https://www.facebook.com:443/ajax/timeline/nav_dropdown_menu/?profileid=100001537070731 HTTP/1.1 Host: www.facebook.com … Cookie: datr=xL8hU29G1O2TCE2-E90mpjIO; lu=SgppRetPNnE8PasL9k-pF62A; fr=0adgb9NSy3JmTXAGc.AWWijC40TCnAprMHFxmeUZIW1DA.BTIb_Q.EK.FMh.AWUHMOUT; locale=en_US; c_user=100001537070731; __user=100001537070731&__dyn=7n8a9EAMCBCFUSt2ugByVbGAFpaGEVF4WpUpBw&fb_dtsg=AQDrRHrN&tt stamp=2658168114827211478&__rev=1162685
  35. 35. CSRF. Контрмеры (cont.) Разработчикам: • Передавать команды (actions) и параметры для них через POST запрос, вместо GET запроса. • Запрашивать дополнительную авторизацию / подтверждение или использовать CAPTCHA при выполнении важных действий. 4/20/2014/ 36 Confluence Wiki http://wiki.itera.no/pages/ removepage.action?page Id=41779352
  36. 36. CSRF. Контрмеры (cont.) Пользователям: • Выходить из системы (logout) после окончания работы • Не разрешать браузеру сохранять логин/пароль (функция «remember me») • Не использовать один и тот же браузер для доступа к рабочей системе и личным сайтам 4/20/2014/ 37
  37. 37. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014/ 38
  38. 38. Phishing 4/20/2014/ 39 Phishing - это способ получения личной информации пользователя, такой как логин, пароль, номер кредитной карты и т.д., когда злоумышленник выдает себя за изначальный ресурс (веб-приложение, сайт и т.д.). Залогом успешной фишинг атаки всегда будет неосторожный пользователь. Инструменты: • OWASP Xenotix – инструмент автоматически создает дубликат страницы указанного веб-сайта. • SpearPhisher – инструмент для генерации e-mail сообщений
  39. 39. Phishing. Контрмеры • Персональное фото или личное сообщение на странице с важной транзакцией. • Использование механизма двойной аутентификации со случайно сгенерированным одноразовым паролем. 4/20/2014/ 40
  40. 40. Phishing. Контрмеры (cont.) • Логирование сайтов, с которых пользователь перешел на текущий сайт (Referer website). • Использование Google Safe Browsing API для проверки является ли заданный сайт безопасным или нет. • Иcпользование плагинов браузеров для определения фишинг сайтов. 4/20/2014/ 41
  41. 41. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014/ 42
  42. 42. Инструменты Перечень инструментов, которые могут понадобиться при тестировании веб-сессий: • Плагины в браузерах для работы с cookies – CookiesManager+ (FireFox) – Cookie Manager (Chrome) • Перехватчики – OWASP WebScarab, Burp Suite – Fiddler – Wireshark, CommView for WiFi • Анализаторы session tokens – Burp – OWASP WebScarab – Session ID Analysis module • Анти-фишинг инструменты – Netcraft Toolbar / Netcraft Extension (Firefox / Chrome) – FB Phishing Protector (Firefox) – проверяет только Facebook – Anti-Phishing & Authenticity Checker (Chrome) – проверяет Facebook, Twitter, Youtube and Google 4/20/2014/ 43
  43. 43. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 5. Phishing (Фишинг) 6. Инструменты 7. Что дальше? 4/20/2014/ 44
  44. 44. Что дальше? 4/20/2014/ 45 Книги Open Web Application Security Testing Guide • Web Security Testing Cookbook Интернет ресурсы: • OWASP сообщество • Mozilla security check-list Интерактивные учебные курсы: • OWASP WebGoat • OWASP Hackademic Challenge Сертификаты: • ISTQB Security Testing – Expert level (анонсирован на 2015 год) • Certified Information Systems Professional (CISSP) • Certified Ethical Hacker (CEH)
  45. 45. Контакты kateryna.ovechenko@iteraconsulting.com 4/20/2014/ 46 kateryna.ovechenko Ekaterina Ovechenko kateryna.ovechenko@owasp.org

×