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/

Podobne dokumenty