Bezpieczeństwo aplikacji internetowych
Transkrypt
Bezpieczeństwo aplikacji internetowych
Bezpieczeństwo aplikacji internetowych Marek Zachara http://marek.zachara.name 1/23 Aplikacje internetowe znajdują się pod ciągłym 'ostrzałem' Jest to wynikiem skali: ponad 3 mld użytkowników sieci 900 mln 'hostnames' 200 mln 'active' 5 mln 'PCs' Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków 2/23 Ataki można podzielić na dwie główne klasy Ataki na użytkowników Ataki na system Przykłady Przykłady XSS DoS CSRF Code Injection Phishing Buffer Overflow Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków 3/23 OWASP TOP 10 A1 : Injection A2 : Broken Session and Authentication A3 : CrossSite Scripting A4 : Insecure Direct Object References A5: Security Misconfiguration A6 : Sensitive Data Exposure A7 : Missing Function Level Wstrzyknięcia danych do SQL, OS, LDAP i innych interpreterów Błędne mechanizmy np. identyfikatorów sesji, kluczy, haseł itp. Przyjęcie i przesłanie do innego użytkownika wadliwych danych (skryptu) Istnienie publicznie dostępnych odwołań do wewnętrznych obiektów Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Konfiguracja serwera, algorytmów szyfrowania, firewalli itp. Brak wzmocnionej ochrony dla szczególnie istotnych danych (np. karty) Nieprawidłowe mechanizmy autoryzacji (np. oparte na GUI) A8 : CrossSite Request Forgery Wykorzystanie użytkownika i jego np. danych sesji (bez ich poznania) A9 : Components with Known Vulnerabilities Korzystanie z bibliotek i algorytmów zawierających znane podatności A10: Unvalidated Redirects and Forwads Użycie niezaufanych danych do przekierowania pageflow Source: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project 4/23 HTTP jest protokołem bezpołączeniowym Nie pozwala na identyfikację kolejnych zapytań użytkownika Wstęp Problemy z sesją HTTP Problem jest rozwiązywane przez użycie Pozostałe ataki na użytkownika 'Identyfikatora Sesji' (ang. SID) Podatności aplikacji Generowany (zwykle losowo) przy pierwszym połączeniu Identyfikuje zapytania użytkownika Przekazywany przez cookies, pola input lub jako parametry URLi Obsługiwany automatycznie przez frameworki i języki programowania WWW Inne metody ataków 5/23 Jak działa sesja HTTP Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków 6/23 Identyfikator sesji jest JEDYNYM elementem identyfikującym zapytania użytkownika. Główne klasy ataków to: Session sniffing Podsłuchanie ID sesji Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Session fixation Wymuszenie ID sesji Session riding Wykorzystanie cudzej sesji 7/23 Metody podsłuchania identyfikatora sesji Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Przechwycenie ruchu TCP/IP Podsłuchanie komunikacji WiFi Ataki na protokół BGP, DNS, itp. Odczyt SID na komputerze użytkownika 8/23 Wymuszenie sesji – Session Fixation Wstęp Problemy z sesją HTTP = Pozostałe ataki na użytkownika Podatności aplikacji Atakujący generuje SID Inne metody ataków Następnie przekazuje SID ofierze I przekonuje do zalogowania do serwisu z tym SIDem Dzięki temu może korzystać z serwisu tak jak ofiara ataku 9/23 Session Raiding / Cross Site Request Forgery Wstęp <img src=”http://server/order?product=12&deliver=my@email... Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Ofiara otwiera spreparowaną Inne metody ataków stronę WWW w trakcie gdy jest zalogowana do serwisu Kod HTML tej strony skutkuje zapytaniem do serwisu Przeglądarka dołącza do zapytania ciasteczko z SID 10/23 Cross Site Scripting (XSS) Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika <script>...</script> Podatności aplikacji Inne metody ataków Uruchomienie skryptu, przesłanie danych Portal / Blog 11/23 Atak na protokół: DNS Spoofing Serwer Banku 198.23.12.1 Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika www.mojbank.pl router Podatności aplikacji Inne metody ataków 198.23.12.1 Prawidłowy serwer DNS 123.01.20.10 240.190.99.2 Serwer DNS 240.190.99.1 Serwer WWW 240.190.99.2 12/23 Bezpośrednie ataki na aplikacje internetowe Uzyskanie dostępu do zasobów serwera: Bazy danych Wstęp Problemy z sesją HTTP Strony WWW (publikacja malware) Pozostałe ataki na użytkownika Kluczy, haseł i danych autoryzacyjnych Podatności aplikacji Innych elementów sieci lokalnej Inne metody ataków Może być etapem pośrednim w ataku złożonym (wielostopniowym) 13/23 SQL Injection – niechlubny zwycięzca Wstęp Login: admin Password: ' OR 1==1; ' Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków SELECT id FORM users WHERE login = ' ' $_POST[“login”] AND password = ' $_POST[“password”]' Zwróci z reguły pierwszy wiersz tabeli ! 14/23 Inne przykłady 'Code Injection' PHP (ASP/JSP) Wstęp LDAP Problemy z sesją HTTP Pozostałe ataki na użytkownika OS/Shell Generalnie, przekazanie do wykonania parametrów w formie string jest Podatności aplikacji Inne metody ataków Bardzo Złym PomysłemTM <? include($_GET['section']) ?> “admin.php” “http://phishsite.mebad/” “../../../../../etc/passwd” <input type=”hidden” name=”user_id” value=”34”> 15/23 Przykład ataku “parameter tampering" www.exploitdb.com/exploits/14360 http://mydomain/MyStruts.action? ('\u0023_memberAccess[\'allowStaticMethodAccess\']') (meh)=true&(aaa) (('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\' ]\u003d\u0023foo')(\u0023foo\u003dnew %20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)') (\u0023rt\[email protected]@getRuntime()))=1 Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Wykorzystuje kodowanie znaków specjalnych przy pomocy kodów UTF Pozwala na uruchomienie arbitralnego kodu w Java z prawami web servera 16/23 Forceful browsing “Ręczne” wybranie ścieżki lub zasobu Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Przeglądanie katalogów Inne metody ataków /some_hidden_dir/ Ominięcie elementu procesu /form5.asp Kod źródłowy strony/obiektu /index.php.bak 17/23 Ataki Denial of Service 'Zalanie' serwera wieloma zapytaniami Zapytania szczególnie obciążające zasoby Awaria serwera / aplikacji Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Szczególne przypadki Blokowanie kont Programowy 'shutdown' Samoblokada (logforging, IDS) Archetyp: “blackfax” 18/23 Distributed DoS (DDoS) Atak prowadzony z wielu źródeł Sumaryczna przepustowość/wydajność klientów większa od serwera Exploit technologii / protokołu: amplification attack Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Skąd brać grupy komputerów do prowadzenia ataku: Wolontariusze (akcje społeczne) Botnety 19/23 Slow Loris GET http://www.someserver.co/ HTTP/1.1 Host: www.someserver.co Connection: keepalive UserAgent: Mozilla/5.0 Xmy: a Xmy: a Xmy: a Xmy: a Xmy: a Xmy: a Xmy: a Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków 20/23 RUDY – aRe yoU Dead Yet? POST http://www.someserver.co/ Host: www.someserver.co Connection: keepalive ContentLength: 1000000 UserAgent: Mozilla/5.0 Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków login: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 21/23 XML Bomb (billion laughs) Atak na parser XML (lub inne parsery) Przykładowy kod: <!ENTITY lol1 'lol'> <!ENTITY lol2 '&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;'> <!ENTITY lol3 '&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;'> <!ENTITY lol4 '&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;'> Wstęp Problemy z sesją HTTP Pozostałe ataki na użytkownika Podatności aplikacji Inne metody ataków Powoduje stworzenie dużej ilości instancji (np. miliard) podstawowego obiektu (lol) Kod XML jest poprawny – exploit specyfikacji 22/23 Dziękuję za uwagę. Pytania? Dokument udostępniany na licencji Creative Commons Wykorzystane materiały: ● Clipart – openclipart.org ● Internet map – The Opte Project Elementy licencjonowane (royaltyfree), nie mogą być wykorzystywane oddzielnie: ● Tło slajdów (background) oraz ikony osób ('awatary') więcej informacji: http://marek.zachara.name Attribution ShareAlike 23/23