Advertisement
Advertisement

More Related Content

Slideshows for you(20)

Similar to QA Fest 2014. Катерина Овеченко. Безопасность сессий в веб-приложениях: практическое применение(20)

Advertisement

More from QAFest(20)

Recently uploaded(20)

Advertisement

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

  1. БЕЗОПАСНОСТЬ СЕССИЙ В ВЕБ-ПРИЛОЖЕНИИ Катерина Овеченко
  2. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 11/4/2014 / 2
  3. Что такое веб-сессия? “HTTP - это протокол без состояний. Сессии решают эту проблему.” Веб-сессия – это структура данных конкретного пользователя, которую приложение использует для хранения временных данных, полезных только в течение того времени, которое пользователь взаимодействует с приложением. Атрибуты сессии: • ID сессии Например: PHPSESSID=a2pdlk7jreml0u1m3bccd12551; • Время действия (Expiry date) Например: EXPIRES 18.03.2014 16:52:22 11/4/2014 / 3
  4. Передача ID сессии 11/4/2014 / 4 • 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 запроса
  5. Хранение ID сессии 11/4/2014 / 5 В cookies браузера Скрытое поле (HTML код) • ID сессии может храниться в исходном коде самого приложения на клиентской стороне во время работы пользователя с приложением. В самом приложении <form method="post" action="url"> <input type="hidden" name="sessionid" value="1111"> ... <input type="submit"> </form>
  6. Когда тестировать сессии? Приложение с веб доступом Приложение используется большим количеством пользователей (внутренних и/или внешних) Приложение содержит важные персональные данные пользователей Пользователи в приложении имеет разные уровни доступа Приложение интегрируется с системой, которая содержит критические данные 11/4/2014 / 6
  7. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 11/4/2014 / 7
  8. Session Hijacking Есть несколько способов получения уникального идентификатора сессии: • Предсказание идентификатора • Сниффинг (Sniffing); • Атака клиентской части (XSS, вредоносный JavaScript код, трояны, etc); 11/4/2014 / 8
  9. Session Hijacking. Примеры 11/4/2014 / 9
  10. Session Hijacking. Контрмеры • Завершение сеанса (logout) и закрытие браузера должны закрывать сессию. • Дополнительный токен: отпечаток браузера (хэшированный User-agent) или другой уникальный токен • Дополнительный токен должен передаваться другим способом, чем ID сессии. • Запретить одновременную работу под одной сессией с нескольких агентов • Шифрование данных передаваемых по сети (https протокол). • Генерировать ID сессий сложно предсказуемыми 11/4/2014/ 10
  11. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 11/4/2014/ 11
  12. Session Fixation Вместо того, чтобы воровать ID сессии пользователя, злоумышленник может зафиксировать ID сессии известный ему и передать его пользователю. Этот тип атаки называется фиксирование сессии. 11/4/2014/ 12 Инструменты для перехвата запросов: • OWASP WebScarab • Fiddler
  13. Session Fixation. Примеры 11/4/2014/ 13
  14. Session Fixation. Контрмеры • Присваивать новый ID сессии после авторизации • Проверять дополнительные параметры при авторизации пользователя, например IP или User-Agent • Реализовать в приложении механизм Анти-фиксации сессии • Запретить одновременную работу под одной сессией с нескольких агентов • Запрашивать авторизацию при изменении уровня доступа пользователя 11/4/2014/ 14
  15. Содержание 1. Теория веб-сессий 2. Session Hijacking (Перехват сессии) 3. Session Fixation (Фиксирование сессии) 4. Cross-Site Request Forgery (Подделка межсайтовых запросов) 11/4/2014/ 15
  16. Cross-Site Request Forgery Подделка межсайтовых запросов (Cross-Site Request Forgery) занимает 8ое место среди TOP-10 уязвимостей по версии Open Web-Application Security Project (OWASP). Атака является успешной, если жертва авторизована в приложении. 11/4/2014/ 16
  17. CSRF. Примеры 11/4/2014/ 17 Добавление видео в 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>')
  18. CSRF. Контрмеры Разработчикам: • Использовать анти-CSRF токен • Хранить и передавать анти-CSRF токен другим способом, чем ID сессии (скрытое поле формы, в теле POST запроса) 11/4/2014/ 18 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=AQDr RHrN&ttstamp=2658168114827211478&__rev=1162685
  19. CSRF. Контрмеры (cont.) Разработчикам: • Передавать команды (actions) и параметры для них через POST запрос, вместо GET запроса. • Запрашивать дополнительную авторизацию / подтверждение или использовать CAPTCHA при выполнении важных действий. 11/4/2014/ 19 Confluence Wiki http://wiki.itera.no/pages/ removepage.action?page Id=41779352
  20. CSRF. Контрмеры (cont.) Пользователям: • Выходить из системы (logout) после окончания работы • Не разрешать браузеру сохранять логин/пароль (функция «remember me») • Не использовать один и тот же браузер для доступа к рабочей системе и личным сайтам 11/4/2014/ 20
  21. Контакты kateryna.ovechenko@iteraconsulting.com 11/4/2014/ 23 kateryna.ovechenko Ekaterina Ovechenko kateryna.ovechenko@owasp.org

Editor's Notes

  1. All now are fixed
Advertisement