4. Что такое веб-сессия?
“HTTP - это протокол без состояний. Сессии решают эту проблему.”
Веб-сессия – это структура данных конкретного пользователя, которую
приложение использует для хранения временных данных, полезных
только в течение того времени, которое пользователь взаимодействует с
приложением.
4/20/2014 / 5
5. Атрибуты сессии
• ID сессии – это уникальный ID, используемый для идентификации
пользователя при обмене запросами между клиентом и сервером.
Например: PHPSESSID=a2pdlk7jreml0u1m3bccd12551;
• Время действия (Expiry date) – это время окончания сессии.
Может иметь такие параметры:
Фиксированное время после авторизации
Фиксированное время после каждого нового запроса
Закрытие браузера
Выход из приложения (logout)
Никогда
Дополнительная авторизация на какое-то действие
Например: EXPIRES 18.03.2014 16:52:22
4/20/2014 / 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. Хранение 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. Немного статистики…
• "64% разработчиков не уверены в безопасности приложений, которые
они создают“. (Microsoft Developer Research)
• "60% всех атак в Интернете направлены на взлом веб-приложений“.
(Gartner)
• "Атаки на сессии пользователей и обход системы аутентификации
занимают 2ое место в TOP-10 уязвимостей." (OWASP)
4/20/2014 / 9
9. Когда тестировать сессии?
Приложение с веб доступом
Приложение используется большим количеством
пользователей (внутренних и/или внешних)
Приложение содержит важные персональные данные
пользователей
Пользователи в приложении имеет разные уровни доступа
Приложение интегрируется с системой, которая содержит
критические данные
4/20/2014/ 10
10. Последствия
Последствия удачной атаки напрямую зависят от того уровня доступа и
данных, которыми обладает жертва в веб-приложении.
4/20/2014/ 11
Финансовые убытки
Нарушение конфиденциальности
Разрушение репутации
12. Session Hijacking
Есть несколько способов получения уникального идентификатора
сессии:
• Предсказание идентификатора
• Сниффинг (Sniffing);
• Атака клиентской части (XSS, вредоносный JavaScript код, трояны, etc);
4/20/2014/ 13
13. Предсказуемые токены
Анализ ID сессии на предсказуемость можно делать вручную или с
помощью специальных инструментов.
На что обратить внимание:
• Имя пользователя / логин
• Пароль
• IP адрес
• Время авторизации
4/20/2014/ 14
14. Инструменты анализа
Инструменты анализа ID сессии:
• Burp Sequencer анализирует распредление ID сесиий для определния
уровня случайности.
• SessionID Analysis - модуль WebScarab, позволяющий определить
уровень случайности сгенерированных ID сессий.
• Crowbar - инструмент для брут-форса ID сессий.
4/20/2014/ 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. Предсказуемые токены. Пример
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 ????
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. Предсказуемые токены. Пример
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
22. Сниффинг
Сниффинг – это атака направленная на перехват сетевых пакетов в сети
используя сниффинг инструменты, снифферы. При этом злоумышленник
и жертва должны находиться в одной подсети.
Как только пакет перехвачен, его содержимое может быть
проанализировано. Таким образом, возможно перехватить ID сессий,
передаваемые в URL или заголовке запроса.
4/20/2014/ 23
23. Сниффинг
Инструменты для перехвата сетевого трафика:
• Wireshark
• Microsoft Network Monitor
• CommView for WiFi
4/20/2014/ 24
Wireshark
24. Атака клиентской части
Злоумышленник может получить ID сессии используя вредоносный код
или программу, которая будет выполнятся на стороне пользователя
(жертвы).
Самый распространенный пример – Cross-Site Scripting (XSS) атака.
4/20/2014/ 25
Пример:
<SCRIPT>alert(document.cookie);</SCRIPT>
26. Session Hijacking. Контрмеры
• Завершение сеанса (logout) и закрытие браузера должны закрывать
сессию.
• Дополнительный токен: отпечаток браузера (хэшированный User-agent)
или другой уникальный токен
• Дополнительный токен должен передаваться другим способом, чем ID
сессии.
• Запретить одновременную работу под одной сессией с нескольких
агентов
• Шифрование данных передаваемых по сети (https протокол).
• Генерировать ID сессий сложно предсказуемыми
4/20/2014/ 27
28. Session Fixation
Вместо того, чтобы воровать ID сессии
пользователя, злоумышленник может
зафиксировать ID сессии известный
ему и передать его пользователю.
Этот тип атаки называется
фиксирование сессии.
4/20/2014/ 29
Инструменты для
перехвата запросов:
• OWASP WebScarab
• Fiddler
30. Session Fixation. Контрмеры
• Присваивать новый ID сессии после авторизации
• Проверять дополнительные параметры при авторизации пользователя,
например IP или User-Agent
• Реализовать в приложении механизм Анти-фиксации сессии
• Запретить одновременную работу под одной сессией с нескольких
агентов
• Запрашивать авторизацию при изменении уровня доступа
пользователя
4/20/2014/ 31
32. Cross-Site Request Forgery
Подделка межсайтовых
запросов (Cross-Site
Request Forgery) занимает
8ое место среди TOP-10
уязвимостей по версии
Open Web-Application
Security Project (OWASP).
Атака является
успешной, если жертва
авторизована в приложении.
4/20/2014/ 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. 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. CSRF. Контрмеры (cont.)
Разработчикам:
• Передавать команды (actions) и параметры для них через POST
запрос, вместо GET запроса.
• Запрашивать дополнительную авторизацию / подтверждение или
использовать CAPTCHA при выполнении важных действий.
4/20/2014/ 36
Confluence Wiki
http://wiki.itera.no/pages/
removepage.action?page
Id=41779352
36. CSRF. Контрмеры (cont.)
Пользователям:
• Выходить из системы (logout) после
окончания работы
• Не разрешать браузеру сохранять
логин/пароль (функция «remember me»)
• Не использовать один и тот же браузер для
доступа к рабочей системе и личным сайтам
4/20/2014/ 37
38. Phishing
4/20/2014/ 39
Phishing - это способ получения личной информации пользователя, такой
как логин, пароль, номер кредитной карты и т.д., когда злоумышленник
выдает себя за изначальный ресурс (веб-приложение, сайт и т.д.).
Залогом успешной фишинг атаки всегда будет неосторожный
пользователь.
Инструменты:
• OWASP Xenotix – инструмент
автоматически создает дубликат
страницы указанного веб-сайта.
• SpearPhisher – инструмент для
генерации e-mail сообщений
39. Phishing. Контрмеры
• Персональное фото или личное сообщение на странице с важной
транзакцией.
• Использование механизма двойной аутентификации со случайно
сгенерированным одноразовым паролем.
4/20/2014/ 40
40. Phishing. Контрмеры (cont.)
• Логирование сайтов, с которых пользователь перешел на текущий сайт
(Referer website).
• Использование Google Safe Browsing API для проверки является ли
заданный сайт безопасным или нет.
• Иcпользование плагинов браузеров для определения фишинг сайтов.
4/20/2014/ 41
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)