instrukcja
Transkrypt
instrukcja
Bezpieczeństwo Systemów Telekomunikacyjnych 2014 / 2015 Bezpieczeństwo aplikacjii sieciowych, SQL Injection Prowadzący: Jarosław Białas Wprowadzenie Celem tego laboratorium jest zapoznanie się z jednym z ważniejszych ataków na aplikacje sieciowe tj. SQL Injection. W czasie laboratorium pokazane zostaną przykłady podatności w istniejących aplikacjach, oraz narzędzia i metody, jakimi mogą posługiwać się atakujący. Wymagany sprzęt i oprogramowanie Komputer z uruchomioną wirtualną maszyną (Kali Linux). Wymagane oprogramowanie: ◦ Serwer (Linux lub Windows): Apache, MySQL, Wordpress, phpMyAdmin ◦ Atakujący (Kali Linux): wpscan, sqlmap, john, hash-identificator, nmap, egrep Plan przebiegu laboratorium Zapoznaj się z formatką raportu Wysłuchaj wprowadzenia do laboratorium (SQL Injection, wyrażenia regularne) Sprawdź komputer (połączenie z siecią, panel XAMPP) Zainstaluj i skonfiguruj własną instancję platformy do blogowania – Wordpress. Uruchom maszynę wirtualną. Dowiedz się jak najwięcej o serwerze, który będziesz atakować. Dowiedz się jak najwięcej o działającej instancji Wordpress'a na atakowanym serwerze. Przeprowadź udany atak SQL Injection. Łamanie hasła użytkownika Wykorzystanie narzędzi do zautomatyzowania procesu ataku Oddanie raportów papierowych (Warunek konieczny zaliczenia laboratorium) Top 10 zagrożeń platform mobilnych. Stan na 2014 rok (porównanie z 2012) Bezpieczeństwo Systemów Telekomunikacyjnych 2014 / 2015 Bezpieczeństwo aplikacjii sieciowych, SQL Injection Prowadzący: Jarosław Białas SQL Injection SQL injection jest luką w zabezpieczeniach aplikacji internetowych będącą najczęściej wynikiem braku filtracji lub typowania parametrów przekazywanych do zapytań bazy danych. Atak SQL injection (SQLI) jest jednym z najpoważniejszych zagrożeń na jakie narażone są webaplikacje. W 2014 roku, SQLI uplasował się na pierwszym miejscu listy top 10 zagrożeń platform mobilnych. Jak zapobiegać: Parametryzowane zapytania (ang. prepared statements). Walidacja danych wejściowych (liczby całkowite, stringi, maile, typ pliku itd.) Ręczne “eskejpowanie” danych Ustawienie odpowiednich praw dostępu do baz danych Używanie ORM Ściągawka z wyrażeń regularnych Znaki specjalne Klasy znaków Wystąpienia Grupy i zakres znaków ^ ($) Początek (koniec) linii \< (\>) Początek (koniec) słowa \s (\S) Biały znak (wszystko inne niż biały znak) \d (\D) Cyfra (wszystko inne niż cyfra) \w (\W) Słowo (znak nie mogący tworzyć słowa, np: biały znak) * 0 i więcej + 1 i więcej ? 0 lub 1 {3} Dokładnie 3 {3,} 3 lub więcej {3,5} 3,4 lub 5 . Dowolny znak poza znakiem nowej linii (a|b) a lub b (...) Grupa [abc] ([^abc]) a lub b lub c (nie (a lub b lub c)) [a-q] [A-Q] Małe (Wielkie) litery od a do q [0-7] Cyfry od 0 do 7 Użycie wyrażeń regularnych w terminalu // Filtrowanie danych wejściowych # egrep --color '<expression>' <filename> # egrep --color '<expression>|$' <filename> # egrep '[a-zA-Z]{10,11}n12' file.txt > file_filtered.txt // Wypisz pasujące linie (dopasowanie w kolorze) // Wypisz wszystkie linie (dopasowanie w kolorze) // Zapisz ciągi składające się z 10 lub 11 małych // lub dużych liter po których następuje ciąg n12 do // pliku Bezpieczeństwo Systemów Telekomunikacyjnych 2014 / 2015 Bezpieczeństwo aplikacjii sieciowych, SQL Injection Prowadzący: Jarosław Białas Przebieg laboratorium: (jeżeli w instrukcji nie zaznaczono inaczej, używaj domyślnych opcji) 1. Zainstaluj i skonfiguruj Wordpress'a (serwer) – ok. 20 minut 1. Za pomocą Xampp Control Panel uruchom Apache i MySQL. Jeżeli nie uda się uruchomić Apache musisz za pomocą menadżera zadań ubić proces(y) httpd oraz wyłączyć usługę systemową Apache (zielony znaczek w panelu Xampp). 2. Ściągnij Wordpress'a 1.5.1 i wypakuj go do folderu C:\xampp\htdocs 3. Uruchom VMware i dodaj nową maszynę wirtualną używając ściągniętych plików. 4. Uruchom Kali Linux w maszynie wirtualnej. 5. Sprawdź czy adres 192.168.17.1 jest dostępny na obu systemach (ping). 6. Otwórz panel phpMyAdmin (http://192.168.17.1/phpmyadmin), a następnie stwórz nową bazę wordpress (jeżeli taka już istnieje to najpierw ją usuń). 7. Popraw wpisy w pliku C:\xampp\htdocs\wordpress-1.5\wp-config.php (DB_NAME, DB_USER, DB_PASS). Otwórz adres http://192.168.17.1/wordpress-1.5/ i dokończ instalację. Po zakończeniu skopiuj hasło administratora. 8. Zaloguj się do portalu i zmień hasło administratora na "password123" 2. Zbieranie informacji, atak słownikowy – ok. 25 minut 1. Adres jaki będziesz skanował z maszyny wirtualnej to 192.168.17.1 2. Uruchom nmap, a następnie przeskanuj serwer www (zidentyfikuj otwarte porty/usługi, wersję oprogramowania, detekcja OS). W raporcie umieść polecenie jakiego użyłeś/aś oraz wykryty system i usługi (uruchom nmap bez argumentów żeby zobaczyć jakie opcje są dostępne). 3. Uruchom narzędzie wpscan w poszukiwaniu podatności serwera na atak. Zanotuj w raporcie jakie dodatkowe informacje w porównaniu z narzędziem nmap udało Ci się uzyskać (uruchom wpscan bez parametrów aby zobaczyć przykładowe użycie). 4. Spróbuj za pomocą ataku słownikowego (narzędzie wpscan, plik passwords.txt) złamać hasło użytkownika admin. W raporcie zanotuj swoje obserwacje jeżeli postanowisz przerwać tą operację. 5. Ogranicz hasła w słowniku do takich, które zawierają 7 lub 8 małych liter po których występują tylko cyfry 123 (np: alamakod123). W raporcie zanotuj sposób w jaki udało Ci się to zrealizować (dokładne polecenie), oraz liczbę linijek w przefiltrowanym pliku (wc -l nazwa_pliku). 6. Otwórz adres zainstalowanej platformy blogowej w przeglądarce i przejdź do jedynej dostępnej kategorii (Uncategorized). W pasku adresu dodaj ' (apostrof) po id kategorii. Zmień id kategorii na inny. Spostrzeżenia zanotuj w raporcie (co jesteś w stanie powiedzieć o bazie danych, na co może wskazywać komunikat od serwera, jak wygląda wysyłane zapytanie i uzyskana odpowiedź) Bezpieczeństwo Systemów Telekomunikacyjnych 2014 / 2015 Bezpieczeństwo aplikacjii sieciowych, SQL Injection Prowadzący: Jarosław Białas 3. Atak na Wordpress'a – ok. 35 minut 1. Przyjrzyj się strukturze tabel które wykorzystuje Wordpress 1.5 (zwróć uwagę na wp_users i wp_categories). Wskazówka: użyj własnej instancji bazy danych oraz narzędzia phpMyAdmin 2. Wykorzystując wiedzę z poprzedniego punktu oraz informację o poleceniu UNION i wykrytej podatności przeprowadź atak SQL Injection. (Wskazówka: liczba kolumn w wyniku obu zapytań musi być jednakowa, do ataku użyj link z nieistniejącą kategorią). W raporcie zanotuj jakiego zapytania użyłeś/aś. 3. Po przeprowadzeniu ataku zanotuj w pliku tekstowym hash hasła użytkownika admin. Czy jesteś w stanie zgadnąć jaki algorytm został użyty do hashowania? Do identyfikacji użyj narzędzia hash-identifier. 4. Użyj narzędzia John The Ripper (john) do złamania hasła. Zmień format hash'a tak aby odpowiadał wykrytemu w poprzednim punkcie (Wskazówka: może istnieć kilka podobnych formatów zapisu z tym samym algorytmem hashowania). W raporcie zanotuj jakiej metody domyślnie używa program do łamania hasła oraz format w jakim przechowywane jest hasło (john plik_z_hashem). 5. Ze względu na ograniczony czas zajęć przerwij proces łamania. Powtórz go z wykorzystaniem słownika (john hash.txt --format FORMAT --wordlist plik_z_haslami) 6. Użyj narzędzia sqlmap do wykrycia podatności SQL Injection (sqlmap --url URL --dbs). Jako url podaj link, którego użyto wcześniej do wykonania ataku (nie dodawaj nic poza oryginalnym adresem jednej z kategorii). W raporcie zanotuj obserwacje. 7. Wybierz interesującą bazę i wyświetl listę tablic (przełącznik -D <baza> --tables). Do czego może doprowadzić posiadanie portalu z podatnościami typu SQL Injection? To oraz własne obserwacje z wyników działania programu zanotuj w raporcie. 8. Wyświetl strukturę tabeli (przełącznik -T <nazwa_tabeli> --columns) 9. Pobierz dane z tabeli z użytkownikami – wymagane będą nazwa użytkownika oraz hash hasła, (przełącznik -C <nazwy_pol_oddzielone_przecinkami> --dump). Przy łamaniu hasła użyj metody słownikowej. 10. Użyj Google do złamania hasha. 11. Uzupełnij ostatni punkt w raporcie z laboratorium Bibliografia oraz materiały uzupełniające 1. Jakub Stanczykiewicz, Przegląd i demonstracja zagrożeń bezpieczeństwa witryn internetowych, praca inżynierska pod kierunkiem dr inż. Piotra Pacyny. 2. https://www.owasp.org/index.php/OWASP_Mobile_Security_Project 3. http://websec.ca/kb/sql_injection 4. http://en.wikipedia.org/wiki/SQL_injection 5. http://www.regexr.com/ 6. http://www.dvwa.co.uk/ 7. https://wpvulndb.com/