45
Безопасность сессий в веб- приложении: практическое применение Катерина Овеченко. Itera Consulting

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

  • Upload
    sqalab

  • View
    3.049

  • Download
    19

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

Катерина Овеченко. Itera Consulting

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 2

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 4

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

Что такое веб-сессия?

“HTTP - это протокол без состояний. Сессии решают эту проблему.”

Веб-сессия – это структура данных конкретного пользователя, которую приложение использует для хранения временных данных, полезных только в течение того времени, которое пользователь взаимодействует с приложением.

04/13/2023/ 5

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

Атрибуты сессии

• ID сессии – это уникальный ID, используемый для идентификации пользователя при обмене запросами между клиентом и сервером.

Например: PHPSESSID=a2pdlk7jreml0u1m3bccd12551;

• Время действия (Expiry date) – это время окончания сессии. Может иметь такие параметры:

Фиксированное время после авторизации Фиксированное время после каждого нового запроса Закрытие браузера Выход из приложения (logout) Никогда Дополнительная авторизация на какое-то действиеНапример: EXPIRES 18.03.2014 16:52:22

04/13/2023/ 6

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

Передача ID сессии

04/13/2023/ 7

• http://www.example.com/index.php?PHPSESSID=a2pdlk7jreml0u1m3bccd12551

• http://www.example.com/s(lit3py55t21z5v55vlm25s55)/orderform.aspx

В URL адресе

• Session-token: SID=lit3py55t21z5v55vlm25s55• Cookies: PHPSESSID=a2pdlk7jreml0u13bccd12551

В поле заголовка

запроса (header)

• Login=Username&password=Password&SessionID=12345678

В теле POST запроса

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

Хранение ID сессии

04/13/2023/ 8

В cookies браузера

Скрытое поле (HTML код)

• ID сессии может храниться в исходном коде самого приложения на клиентской стороне во время работы пользователя с приложением.

В самом приложении

<form method="post" action="url"> <input type="hidden" name="sessionid" value="1111"> ... <input type="submit"> </form>

Kateryna Ovechenko
Поменять анимацию
Page 8: Безопасность сессий в веб-приложениях: практическое применение

Немного статистики…

• "64% разработчиков не уверены в безопасности приложений, которые они создают“. (Microsoft Developer Research)

• "60% всех атак в Интернете направлены на взлом веб-приложений“. (Gartner)

• "Атаки на сессии пользователей и обход системы аутентификации занимают 2ое место в TOP-10 уязвимостей." (OWASP)

04/13/2023/ 9

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

Когда тестировать сессии?

Приложение с веб доступом

Приложение используется большим количеством пользователей (внутренних и/или внешних)

Приложение содержит важные персональные данные пользователей

Пользователи в приложении имеет разные уровни доступа

Приложение интегрируется с системой, которая содержит критические данные

04/13/2023/ 10

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

Последствия

Последствия удачной атаки напрямую зависят от того уровня доступа и данных, которыми обладает жертва в веб-приложении.

04/13/2023/ 11

Финансовые убытки

Нарушение конфиденциальности

Разрушение репутации

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 12

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

Session Hijacking

Есть несколько способов получения уникального идентификатора сессии:

• Предсказание идентификатора

• Сниффинг (Sniffing);

• Атака клиентской части (XSS, вредоносный JavaScript код, трояны, etc);

04/13/2023/ 13

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

Предсказуемые токены

Анализ ID сессии на предсказуемость можно делать вручную

или с помощью специальных инструментов.

На что обратить внимание:

• Имя пользователя / логин

• Пароль

• IP адрес

• Время авторизации

04/13/2023/ 14

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

Инструменты анализа

Инструменты анализа ID сессии:

• Burp Sequencer анализирует распредление ID сесиий для определния уровня случайности.

• SessionID Analysis - модуль WebScarab, позволяющий определить уровень случайности сгенерированных ID сессий.

• Crowbar - инструмент для брут-форса ID сессий.

04/13/2023/ 15

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

Предсказуемые токены. Пример

04/13/2023/ 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 ????

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

Предсказуемые токены. Пример

04/13/2023/ 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 ????

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

Предсказуемые токены. Пример

04/13/2023/ 18

Логин Пароль ID сессии - время

Webgoat Test123 65432ubphcfx

Aspect 987654qwer

ty

65432udfqtb

alice Alice ????

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

Предсказуемые токены. Пример

04/13/2023/ 19

Логин Пароль ID сессии - время

Webgoat Test123 65432ubphcfx

Aspect 987654qwer

ty

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

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

Предсказуемые токены. Пример

04/13/2023/ 20

Логин Пароль ID сессии - время

Webgoat Test123 65432ubphcfx

Aspect 987654qwer

ty

65432udfqtb

alice Alice

A – b l – m i – j c – d e – f = bmjdf

65432fdjmb

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

Предсказуемые токены. Пример

04/13/2023/ 21

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

Предсказуемые токены. Пример

04/13/2023/ 22

Burp - Sequencer

OWASP WebScarab SessionID Analyser

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

Сниффинг

Сниффинг – это атака направленная на перехват сетевых пакетов в сети используя сниффинг инструменты, снифферы. При этом злоумышленник и жертва должны находиться в одной подсети.

Как только пакет перехвачен, его содержимое может быть проанализировано. Таким образом, возможно перехватить ID сессий, передаваемые в URL или заголовке запроса.

04/13/2023/ 23

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

Сниффинг

Инструменты для перехвата сетевого трафика:

• Wireshark

• Microsoft Network Monitor

• CommView for WiFi

04/13/2023/ 24

Wireshark

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

Атака клиентской части

Злоумышленник может получить ID сессии используя вредоносный код или программу, которая будет выполнятся на стороне пользователя (жертвы).

Самый распространенный пример – Cross-Site Scripting (XSS) атака.

04/13/2023/ 25

Пример:<SCRIPT>alert(document.cookie);</SCRIPT>

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

Session Hijacking. Примеры

04/13/2023/ 26

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

Session Hijacking. Контрмеры

• Завершение сеанса (logout) и закрытие браузера должны закрывать сессию.

• Дополнительный токен: отпечаток браузера (хэшированный User-agent) или другой уникальный токен

• Дополнительный токен должен передаваться другим способом, чем ID сессии.

• Запретить одновременную работу под одной сессией с нескольких агентов

• Шифрование данных передаваемых по сети (https протокол).

• Генерировать ID сессий сложно предсказуемыми

04/13/2023/ 27

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 28

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

Session Fixation

Вместо того, чтобы воровать ID сессии пользователя, злоумышленник может зафиксировать ID сессии известный ему и передать его пользователю. Этот тип атаки называется фиксирование сессии.

04/13/2023/ 29

Инструменты для перехвата запросов:• OWASP WebScarab• Fiddler

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

Session Fixation. Примеры

04/13/2023/ 30

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

Session Fixation. Контрмеры

• Присваивать новый ID сессии после авторизации

• Проверять дополнительные параметры при авторизации пользователя, например IP или User-Agent

• Реализовать в приложении механизм Анти-фиксации сессии

• Запретить одновременную работу под одной сессией с нескольких агентов

• Запрашивать авторизацию при изменении уровня доступа пользователя

04/13/2023/ 31

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 32

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

Cross-Site Request Forgery

Подделка межсайтовых запросов (Cross-Site Request Forgery) занимает 8ое место среди TOP-10 уязвимостей по версии Open Web-Application Security Project (OWASP).

Атака является успешной, если жертва авторизована в приложении.

04/13/2023/ 33

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

CSRF. Примеры

04/13/2023/ 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/PRESENTATIONID?ajax=false&redirect=mypage

Добавлять дополнительный e-mail в Facebookdocument.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="[email protected]"/></form>')

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

CSRF. Контрмеры

Разработчикам:

• Использовать анти-CSRF токен

• Хранить и передавать анти-CSRF токен другим способом, чем ID сессии (скрытое поле формы, в теле POST запроса)

04/13/2023/ 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&ttstamp=2658168114827211478&__rev=1162685

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

CSRF. Контрмеры (cont.)

Разработчикам:

• Передавать команды (actions) и параметры для них через POST запрос, вместо GET запроса.

• Запрашивать дополнительную авторизацию / подтверждение или использовать CAPTCHA при выполнении важных действий.

04/13/2023/ 36

Confluence Wiki

http://wiki.itera.no/pages/ removepage.action?page Id=41779352

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

CSRF. Контрмеры (cont.)

Пользователям:

• Выходить из системы (logout) после окончания работы

• Не разрешать браузеру сохранять логин/пароль (функция «remember me»)

• Не использовать один и тот же браузер для доступа к рабочей системе и личным сайтам

04/13/2023/ 37

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 38

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

Phishing

04/13/2023/ 39

Phishing - это способ получения личной информации пользователя, такой как логин, пароль, номер кредитной карты и т.д., когда злоумышленник выдает себя за изначальный ресурс (веб-приложение, сайт и т.д.).

Залогом успешной фишинг атаки всегда будет неосторожный пользователь.

Инструменты: • OWASP Xenotix – инструмент

автоматически создает дубликат страницы указанного веб-сайта.

• SpearPhisher – инструмент для генерации e-mail сообщений

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

Phishing. Контрмеры

• Персональное фото или личное сообщение на странице с важной транзакцией.

• Использование механизма двойной аутентификации со случайно сгенерированным одноразовым паролем.

04/13/2023/ 40

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

Phishing. Контрмеры (cont.)

• Логирование сайтов, с которых пользователь перешел на текущий сайт (Referer website).

• Использование Google Safe Browsing API для проверки является ли заданный сайт безопасным или нет.

• Иcпользование плагинов браузеров для определения фишинг сайтов.

04/13/2023/ 41

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 42

Page 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

04/13/2023/ 43

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

Содержание

1. Теория веб-сессий

2. Session Hijacking (Перехват сессии)

3. Session Fixation (Фиксирование сессии)

4. Cross-Site Request Forgery (Подделка межсайтовых запросов)

5. Phishing (Фишинг)

6. Инструменты

7. Что дальше?

04/13/2023/ 44

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

Что дальше?

04/13/2023/ 45

Книги • O

pen Web Application Security Testing Guide

• Web Security Testing Cookbook

Интернет ресурсы:• O

WASP сообщество

• Mozilla security check-list

Интерактивные учебные курсы:• O

WASP WebGoat

• OWASP Hackademic Challenge

Сертификаты:• I

STQB Security Testing – Expert level (анонсирован на 2015 год)

• Certified Information Systems Professional (CISSP)

• Certified Ethical Hacker (CEH)

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

Контакты

[email protected]

04/13/2023/ 46

kateryna.ovechenko

Ekaterina Ovechenko

[email protected]