Zarządzanie sesją w aplikacjach Internetowych. Kraków, 2008-10-23 Paweł Goleń



Podobne dokumenty
The OWASP Foundation Session Management. Sławomir Rozbicki.

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Sprawozdanie nr 4. Ewa Wojtanowska

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse

Polityka prywatności serwisu

Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniach w następujący sposób:

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Polityka prywatności dla strony ELCEN Sp. z o.o. z siedzibą w Gdyni

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Cookie Policy. 1. Informacje ogólne.

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Bezpieczeństwo systemów komputerowych

Laboratorium nr 4 - Badanie protokołów WWW

POLITYKA PRYWATNOŚCI I WYKORZYSTYWANIA PLIKÓW COOKIES W SERWISACH INTERNETOWYCH GoPay Sp. z o.o.

Serwery aplikacji. dr Radosław Matusik. radmat

POLITYKA PRYWATNOŚCI SERWIS:

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Sieci Komputerowe i Bazy Danych

POLITYKA PRYWATNOŚCI

Gatesms.eu Mobilne Rozwiązania dla biznesu

Wykorzystywanie plików cookies

Przegląd zagrożeń związanych z DNS. Tomasz Bukowski, Paweł Krześniak CERT Polska

ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl

Podręcznik Integracji


Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Obowiązek informacyjny RODO

Drobne błędy w portalach WWW

II. PRZETWARZANIE DANYCH OSOBOWYCH:

4. Podstawowa konfiguracja

PORADNIKI. Atak SMB Man-In-The-Middle

Projektowani Systemów Inf.

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

POLITYKA PRYWATNOŚCI

Metoda pomiaru site-centric

Instrukcja konfiguracji funkcji skanowania

Sprawozdanie Laboratorium 4

POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W ID FINANCE POLAND SP. Z O.O. I. Definicje

Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

DESlock+ szybki start

Sklep Internetowy (HTML/xHTML, CSS, JavaScript, PHP, MySQL)

P O L I T Y K A P R Y W A T N O Ś C I. 1 Jak zbieramy dane?

Ataki na serwery Domain Name System (DNS Cache Poisoning)

Polityka prywatności oraz plików cookies

Akademia Górniczo-Hutnicza im. Stanisława Staszica

Usługi sieciowe systemu Linux

Specyfikacja techniczna. mprofi Interfejs API

Karol Gałka. Numer albumu: Inżynieria mechatroniczna

Bezpieczeństwo systemu Rubinet

Danych Osobowych oświadcza, że za wyjątkiem sytuacji uregulowanych w prawie polskim dane dotyczące IP oraz cookies nie będą przekazywane osobom

POLITYKA PRYWATNOŚCI

I.Wojnicki, Tech.Inter.

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Polityka prywatności

System DiLO. Opis interfejsu dostępowego v. 2.0

Polityka prywatności. 1. Informacje ogólne.

Praktyczne wykorzystanie mechanizmów zabezpieczeń w aplikacjach chmurowych na przykładzie MS Azure

Systemy operacyjne. Tworzenie i zarządzanie kontami użytkowników

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Płatności CashBill - SOAP

PANEL ADMINISTRACYJNY SPRZEDAWCY SZYBKI START

Client-side Hacking - wprowadzenie w tematykę ataków na klienta. Radosław Wal radoslaw.wal@clico.pl

Win Admin Monitor Instrukcja Obsługi

Instrukcja Integracja z istore. Wersja z 07/02/2015. Copyright Zakupteraz.pl

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Krótka instrukcja instalacji

Program szkolenia: Bezpieczny kod - podstawy

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Polityka prywatności oraz wykorzystania plików Cookies w serwisie internetowym NEO HOSPITAL

Polityka Prywatności i Cookies

Telesprzedaż by CTI Instrukcja

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

POLITYKA PRYWATNOŚCI SERWISU PRACUJTERAZ.COM

POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Wybrane działy Informatyki Stosowanej

Poniżej znajdą Państwo dalsze informacje na temat rodzajów używanych przez nas plików cookies. Rodzaj zbieranych danych. przechowywany plik cookie?

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Obsługa poczty elektronicznej w domenie emeritus.ue.poznan.pl

1. Wykonanie Umowy Sprzedaży oraz przesłanie spersonalizowanej informacji handlowej w ramach marketingu bezpośredniego.

Polityka prywatności Spółdzielni Mieszkaniowej Słoneczny Stok

Technologie internetowe

POLITYKA PRYWATNOŚCI APLIKACJI MOBILNEJ SMARTBAG SŁOWNIK POJĘĆ:

Zdalne logowanie do serwerów

Bezpieczeństwo aplikacji internetowych

ekopia w Chmurze bezpieczny, zdalny backup danych

Sesje i logowanie. 1. Wprowadzenie

Transkrypt:

Zarządzanie sesją w aplikacjach Internetowych Kraków, 2008-10-23 Paweł Goleń

Agenda Po co sesje w aplikacjach internetowych Sposoby przekazywania identyfikatorów Sposoby ochrony Cookie Analiza identyfikatora sesji Ataki: Session fixation, Session adoption Dobre praktyki, czyli co robić Z innej beczki: CSRF

HTTP jest bezstanowy Protokół HTTP jest bezstanowy Typowa transakcja Nawiązanie połączenia z serwerem Klient wysyła żądanie Serwer przetwarza żądanie i wysyła odpowiedź Zakończenie połączenia z serwerem

Optymalizacje... Nie zmieniają faktu bezstanowości HTTP Głównie ze względu na wydajność Nawiązanie połączenia TCP jest drogie Keep-Alive Transakcja HTTP jest droga...ale to już inny temat (performance) YSlow (http://developer.yahoo.com/yslow/)

HTTPS jest bezstanowy Właściwie prawie bezstanowy HTTPS to HTTP po SSL Taki sam scenariusz jak dla HTTP Dodatkowa warstwa SSL Możliwość wykorzystania ID sesji SSL W praktyce rzadko wykorzystywane Nigdy się nie spotkałem z takim rozwiązaniem

Aplikacje są stanowe Śledzenie stanu Użytkownik nieuwierzytelniony Użytkownik uwierzytelniony Wiązanie kolejnych żądań użytkownika Operacje złożone z wielu kroków Zapamiętanie stanu z poprzednich kroków Właściwa kolejność kroków

Prosty przykład: sklep Użytkownik przegląda ofertę sklepu Użytkownik dodaje produkty do koszyka Użytkownik dokonuje zakupu Produkty dodane do koszyka Uwierzytelnienie lub założenie konta Zapłata za zakupy Realizacja zamówienia

Rozwiązanie: sesje Dla klienta tworzona sesja na serwerze Żądania rozpoznawane po identyfikatorze Sesje obsługiwane przez środowisko Programista korzysta, a nie implementuje Przykładowe identyfikatory sesji PHPSESSIONID, JSESSIONID, ASPSESSIONID, ASP.NET_SessionId Programista nie wie jak sesja jest realizowana

Przekazywanie ID Identyfikatory przekazywane w: Cookie ASP.NET_SessionId=qpkdrdaata2haau2ufiymz45 Parametrze (np. pole hidden) URL W GET W POST /viewcontainer.do;jsessionid=653(...)7d363a

ID sesji w URL jest ZŁE Ułatwia atak Session fixation Duże prawdopodobieństwo ujawnienia: Logi serwera HTTP, PROXY, historia przeglądarki Nagłówek Referer Nawet do innych serwerów Nietypowe przykłady: wydruk, screenshot Jeśli ID sesji w parametrze użyj POST

...ale czasem konieczne Przeglądarka nie akceptuje Cookie Przeglądarki wspierają Cookie Problemem jest użytkownik Cookie to zagrożenie dla prywatności!...i inne twierdzenia fachowej prasy Cookie sesyjne NIE JEST składowane, A przynajmniej nie powinno Użytkownicy mają w zwyczaju się nie wylogowywać

Gdy nie ma Cookie Fallback do identyfikatorów w URL ASP.NET: http://site.com/app/(xxxxxxxxxxx)/home.aspx URL Rewriting ;PHPSESSIONID= ;JSESSIONID= Dalej zakładam, że cookie jest

Bezpieczne Cookie Cookie == dostęp do sesji (prawie zawsze) Cookie sesyjne musi być chronione Co trzeba przewidzieć: Ataki XSS Podsłuch ruchu sieciowego Wysłanie do innej ścieżki Wysłanie do innego serwera

Ataki XSS Typowy przykład: alert(document.cookie) Flaga HttpOnly Wprowadzona przez Microsoft w IE 6.0 Cookie niedostępne przez skrypty Więcej: https://www.owasp.org/index.php/httponly Możliwość obejścia: XmlHttpRequest Metoda TRACE na serwerze jest ZŁA

Podsłuch ruchu sieciowego Użyj SSL SSL na chwilę nie wystarcza! Flaga Secure Cookie wysyłane tylko przez SSL Szczególnie istotne gdy wiele serwisów Informacyjny po HTTP Bankowy po SSL

Inny serwer Atrybut Domain Nie pokazuj Cookie innym (pod)domenom! Domyślnie jest dobrze Brak atrybutu Domain Cookie dostępne tylko dla serwera, który je ustawił Choć z (implementacją) cookies może być różnie Cross-Site Cooking

Inna ścieżka Atrybut Path Określa ścieżkę, której Cookie dotyczy Bardzo często ustawiany na / Błąd jeśli wiele aplikacji na jednym serwerze http://server.com/app1 http://server.com/app2 Ogranicz Cookie do właściwiej ścieżki!

Cookie powinno być losowe Przykład z boku : DNS Cache Poisoning Mała losowość Błędy generatorów PRNG Mały zakres wartości W przypadku identyfikatora sesji Odgadnięcie Cookie == przejęcie sesji Odgadnięcie MUSI być trudne Długa wartość losowa, a nie losowa

Niby dobrze, a źle ID sesji wyliczany np. md5(username,ip, timestamp) Nazwę użytkownika można zgadnąć IP można zgadnąć (wyszukać) Timestamp jest mniej więcej znany Niebezpieczne dla projektów publicznych Wynikowa wartość wydaje się losowa Ujawnienie algorytmu - losowość ZNIKA

...już lepiej Już lepiej: HMAC(md5(username, IP, timestamp), klucz) Klucz losowy Unikalny dla każdej instancji aplikacji ID sesji generowane przez środowisko Zwykle są to wartości losowe...ale zawsze można sprawdzić

Analiza losowości Burp Suite, moduł Sequencer: http://portswigger.net/suite/ Przykłady: prawdziwy random md5(timestamp) random + timestamp z życia wzięty (PHP)

Co teraz? Cookie jest chronione HttpOnly, Secure, Path, Domain, Komunikacja jest szyfrowana, Może można ustawić identyfikator? Czasami można...

A ja znam Twoje ID! Session Fixation http://www.acrossecurity.com/papers.htm Ustalenie znanej wartości ID sesji Podtrzymanie życia sesji Ofiara korzysta ze znanego ID sesji Trzeba ją tylko do tego przekonać Session Fixation jest ZŁE! Ponownie: nie przekazuj ID sesji w URL

A Twoje ID będzie... a Session Adoption jest jeszcze gorsze Session Adoption Podobne do Session Fixation Zaakceptowanie przekazanego ID sesji, Stworzenie sesji o wybranym ID, Przykład: http://www.blackhat.com/presentations/bh-usa- 06/BH-US-06-Willis.pdf

Scenariusz ataku: zdalnie Aplikacja akceptuje ID sesji z URL Atakujący zastawia pułapki Maile phishingowe z URL, Linki do aplikacji na innych stronach, Atakujący czeka na ofiarę Przejmuje sesję ofiary

Scenariusz ataku: lokalnie Współdzielone komputery Kafejka internetowa małe firmy Atakujący zastawia pułapkę Ustalenie Cookie Zaczajenie się przy innym komputerze Przejęcie sesji ofiary

Dobre praktyki Używaj SSL Zmieniaj ID sesji Przy zmianie jej stanu Użytkownik anonimowy zalogowany Użytkownik zalogowany wylogowany Niszcz starą sesję Przy przejściu z HTTP na HTTPS Przy przejściu z HTTPS na HTTP

Dobre praktyki Czas życia sesji Użytkownicy często się nie wylogowują Trzeba dobrać do typu aplikacji Zbyt krótki irytuje użytkowników Zbyt długi też źle Możliwy atak denial-of-service Każda sesja zajmuje zasoby serwera

Dalsze utrudnianie życia Osadzenie w sesji danych identyfikujących Adres IP, User-Agent, Weryfikacja danych przy każdym żądaniu Ograniczenie powierzchni ataku, User-Agent można sfałszować, Adres IP sfałszować trudniej, Nieprawidłowe dane: NISZCZ SESJĘ

Czyść sesję! Dane zapisane w sesji trzeba usunąć Czasami oddzielne identyfikatory (cookie) Sesji, Uwierzytelnienia, Dwóch różnych użytkowników w sesji Dane poprzedniego użytkownika zostają w sesji Nowy użytkownik ma brudną sesję

Czyść sesję: przykład Przykład: Co się stanie jeśli w sesji jest flaga IS_ADMIN Flaga jest ustawiana, jeśli użytkownik to administrator, Jeśli flaga jest ustawiona funkcje administracyjne, Flaga nie jest czyszczona... Loguje się nowy użytkownik ze starym ID sesji......ups!

Podsumowanie Używaj SSL Zmieniaj ID sesji Dobierz czas życia sesji Czyść sesję przed i po użyciu Niszcz sesję przy wylogowaniu...to jeszcze nie koniec :)

Coś z zupełnie(?) innej beczki Cross Site Request Forgery Czyli jak działać w cudzej sesji, bez jej przejmowania

Wysyłanie Cookie Przeglądarka wysyła Cookie automatycznie Gdy je ma, oraz: zgadza się host/domena zgadza się ścieżka Cookie współdzielone Przez różne zakładki Przez różne okna (w tym samym procesie)

Przykład: img src= Jak wysłać żądanie? Umieścić odwołanie na innej stronie <img src= https://www.bank.pl/przelej?do=mnie > Przeglądarka pobiera obrazek Jeśli Cookie istnieje, zostanie wysłane: Nie pomoże flaga HttpOnly Nie pomoże flaga Secure Nie trzeba zgadywać Cookie Dobre praktyki na nic?

Jak się bronić przed CSRF Można sprawdzać nagłówek Referer Czasami skuteczne, niezbyt eleganckie Możliwe do obejścia Wymaganie losowej wartości w żądaniu atakujący nie może jej przewidzieć atakujący nie może jej poznać Patrz: CSRFGuard (OWASP)

Pytania?