Testowanie_bezpieczenstwa_aplikacji_internetowych_Receptury_tebeap.pdf

(585 KB) Pobierz
Testowanie bezpieczeñstwa
aplikacji internetowych.
Receptury
Autor: Paco Hope, Ben Walther
T³umaczenie: Rados³aw Meryk
ISBN: 978-83-246-2208-5
Tytu³ orygina³u:
Web Security Testing Cookbook
Format: 168x237, stron: 312
Poznaj i wykorzystaj mechanizmy testowania zabezpieczeñ,
a nikt nie przeœlizgnie siê przez Twoj¹ witrynê!
Jak zainstalowaæ i skonfigurowaæ narzêdzia do testowania zabezpieczeñ?
Jak szybko i sprawnie znaleŸæ problemy w aplikacjach?
Jak wykorzystywaæ testy powtarzalne?
Witryny internetowe oraz ich aplikacje stanowi¹ swoist¹ wirtualn¹ furtkê do wszystkich
korporacji i instytucji. Jak zatem zadbaæ, aby nikt niepo¿¹dany nie przedosta³ siê
do œrodka? Co sprawia, ¿e witryna jest naprawdê bezpieczna? I w jaki sposób testowaæ
aplikacjê, aby nie by³ to proces ¿mudny i czasoch³onny, a raczej sprawny i skuteczny?
Oto rozwi¹zanie — niniejsza ksi¹¿ka zawiera proste receptury, dziêki którym z ³atwoœci¹
znajdziesz luki w aplikacjach, zanim zrobi¹ to ró¿ni hakerzy.
Ksi¹¿ka
„Testowanie
bezpieczeñstwa aplikacji internetowych. Receptury” to napisany
zrozumia³ym jêzykiem podrêcznik, dziêki któremu szybko poznasz mechanizmy
testowania zabezpieczeñ. Praktyczne przyk³ady zawarte w tym przewodniku sprawi¹,
¿e szybko nauczysz siê w³¹czaæ systemy zabezpieczeñ do standardowych procedur
kontroli aplikacji. Bez problemu stworzysz testy dotycz¹ce funkcji AJAX, a tak¿e
przeprowadzisz rozbudowane, wieloetapowe testy podatnoœci na klasyczne problemy:
skrypty krzy¿owe oraz wstrzykiwanie kodu.
Bezpieczeñstwo oprogramowania
Instalacja darmowych narzêdzi i rozszerzeñ
Kodowanie danych w Internecie
Manipulowanie danymi wejœciowymi
Fa³szowanie informacji przesy³anych w nag³ówkach przez przegl¹darki
Przesy³anie na serwer plików o du¿ej objêtoœci
Obchodzenie ograniczeñ interfejsu u¿ytkownika
Autoryzacja masowego skanowania
Ataki przeciwko aplikacjom AJAX
Manipulowanie sesjami
Testy wielostronne
Niech bezpieczeñstwo Twoich aplikacji nie spêdza Ci snu z powiek!
Spis treści
Słowo wstępne .............................................................................................................11
Przedmowa .................................................................................................................. 13
1. Wprowadzenie ............................................................................................................23
1.1. Co to jest testowanie zabezpieczeń?
1.2. Czym są aplikacje internetowe?
1.3. Podstawowe pojęcia dotyczące aplikacji internetowych
1.4. Testowanie zabezpieczeń aplikacji internetowej
1.5. Zasadnicze pytanie brzmi: „Jak”
23
27
31
36
37
2. Instalacja darmowych narzędzi .................................................................................. 41
2.1. Instalacja przeglądarki Firefox
2.2. Instalacja rozszerzeń przeglądarki Firefox
2.3. Instalacja rozszerzenia Firebug
2.4. Instalacja programu WebScarab grupy OWASP
2.5. Instalowanie Perla i pakietów w systemie Windows
2.6. Instalacja Perla i korzystanie z repozytorium CPAN w systemie Linux
2.7. Instalacja narzędzia CAL9000
2.8. Instalacja narzędzia ViewState Decoder
2.9. Instalacja cURL
2.10. Instalacja narzędzia Pornzilla
2.11. Instalacja
środowiska
Cygwin
2.12. Instalacja narzędzia Nikto 2
2.13. Instalacja zestawu narzędzi Burp Suite
2.14. Instalacja serwera HTTP Apache
42
42
43
44
45
46
47
47
48
49
49
51
52
53
5
3. Prosta obserwacja .......................................................................................................55
3.1. Przeglądanie
źródła
HTML strony
3.2. Zaawansowane przeglądanie kodu
źródłowego
3.3. Obserwacja nagłówków
żądań
„na
żywo”
za pomocą dodatku Firebug
3.4. Obserwacja danych POST „na
żywo”
za pomocą narzędzia WebScarab
3.5. Oglądanie ukrytych pól formularza
3.6. Obserwacja nagłówków odpowiedzi „na
żywo”
za pomocą dodatku TamperData
3.7. Podświetlanie kodu JavaScript i komentarzy
3.8. Wykrywanie zdarzeń JavaScript
3.9. Modyfikowanie specyficznych atrybutów elementów
3.10. Dynamiczne
śledzenie
atrybutów elementów
3.11. Wnioski
56
58
60
64
68
69
71
73
74
76
78
4. Kodowanie danych w internecie ................................................................................ 79
4.1. Rozpoznawanie binarnych reprezentacji danych
4.2. Korzystanie z danych Base64
4.3. Konwersja liczb zakodowanych w Base36 na stronie WWW
4.4. Korzystanie z danych Base36 w Perlu
4.5. Wykorzystanie danych kodowanych w URL
4.6. Wykorzystywanie danych w formacie encji HTML
4.7. Wyliczanie skrótów
4.8. Rozpoznawanie formatów czasowych
4.9. Programowe kodowanie wartości oznaczających czas
4.10. Dekodowanie wartości ViewState języka ASP.NET
4.11. Dekodowanie danych zakodowanych wielokrotnie
80
82
84
85
85
88
89
91
93
94
96
5. Manipulowanie danymi wejściowymi ........................................................................99
5.1. Przechwytywanie i modyfikowanie
żądań
POST
5.2. Obejścia ograniczeń pól wejściowych
5.3. Modyfikowanie adresu URL
5.4. Automatyzacja modyfikowania adresów URL
5.5. Testowanie obsługi długich adresów URL
5.6. Edycja plików cookie
5.7. Fałszowanie informacji przesyłanych przez przeglądarki w nagłówkach
5.8. Przesyłanie na serwer plików o złośliwych nazwach
5.9. Przesyłanie na serwer plików o dużej objętości
5.10. Przesyłanie plików XML o złośliwej zawartości
5.11. Przesyłanie plików XML o złośliwej strukturze
5.12. Przesyłanie złośliwych plików ZIP
5.13. Przesyłanie na serwer przykładowych plików wirusów
5.14. Obchodzenie ograniczeń interfejsu użytkownika
6
|
Spis treści
100
103
104
107
108
110
112
115
117
118
120
122
123
124
6. Automatyzacja masowego skanowania ...................................................................127
6.1. Przeglądanie serwisu WWW za pomocą programu WebScarab
6.2. Przekształcanie wyników działania programów typu pająk
do postaci listy inwentaryzacyjnej
6.3. Redukowanie listy adresów URL do testowania
6.4. Wykorzystanie arkusza kalkulacyjnego do redukcji listy
6.5. Tworzenie kopii lustrzanej serwisu WWW za pomocą programu LWP
6.6. Tworzenie kopii lustrzanej serwisu WWW za pomocą polecenia wget
6.7. Tworzenie kopii lustrzanej specyficznych elementów
za pomocą polecenia wget
6.8. Skanowanie serwisu WWW za pomocą programu Nikto
6.9. Interpretacja wyników programu Nikto
6.10. Skanowanie serwisów HTTPS za pomocą programu Nikto
6.11. Używanie programu Nikto z uwierzytelnianiem
6.12. Uruchamianie Nikto w określonym punkcie startowym
6.13. Wykorzystywanie specyficznego pliku cookie sesji z programem Nikto
6.14. Testowanie usług sieciowych za pomocą programu WSFuzzer
6.15. Interpretacja wyników programu WSFuzzer
128
130
133
134
134
136
138
138
140
142
143
144
145
146
148
7. Automatyzacja wybranych zadań z wykorzystaniem cURL .....................................151
7.1. Pobieranie strony za pomocą cURL
7.2. Pobieranie wielu odmian strony spod adresu URL
7.3. Automatyczne
śledzenie
przekierowań
7.4. Wykorzystanie cURL do testowania podatności
na ataki za pomocą skryptów krzyżowych
7.5. Wykorzystanie cURL do testowania podatności
na ataki typu „przechodzenie przez katalog”
7.6. Naśladowanie specyficznego typu przeglądarki lub urządzenia
7.7. Interaktywne naśladowanie innego urządzenia
7.8. Imitowanie wyszukiwarki za pomocą cURL
7.9. Pozorowanie przepływu poprzez fałszowanie nagłówków referer
7.10. Pobieranie samych nagłówków HTTP
7.11. Symulacja
żądań
POST za pomocą cURL
7.12. Utrzymywanie stanu sesji
7.13. Modyfikowanie plików cookie
7.14. Przesyłanie pliku na serwer za pomocą cURL
7.15. Tworzenie wieloetapowego przypadku testowego
7.16. Wnioski
152
153
154
155
158
161
162
165
166
167
168
169
171
171
172
177
Spis treści
|
7
8. Automatyzacja zadań z wykorzystaniem biblioteki LibWWWPerl ........................ 179
8.1. Napisanie prostego skryptu Perla do pobierania strony
8.2. Programowe modyfikowanie parametrów
8.3. Symulacja wprowadzania danych za pośrednictwem formularzy
z wykorzystaniem
żądań
POST
8.4. Przechwytywanie i zapisywanie plików cookie
8.5. Sprawdzanie ważności sesji
8.6. Testowanie podatności na wymuszenia sesji
8.7. Wysyłanie złośliwych wartości w plikach cookie
8.8. Przesyłanie na serwer złośliwej zawartości plików
8.9. Przesyłanie na serwer plików o złośliwych nazwach
8.10. Przesyłanie wirusów do aplikacji
8.11. Parsowanie odpowiedzi za pomocą skryptu Perla w celu sprawdzenia
odczytanych wartości
8.12. Programowa edycja strony
8.13. Wykorzystanie wątków do poprawy wydajności
180
181
183
184
185
188
190
192
193
195
197
198
200
9. Wyszukiwanie wad projektu ....................................................................................203
9.1. Pomijanie obowiązkowych elementów nawigacji
9.2. Próby wykonywania uprzywilejowanych operacji
9.3. Nadużywanie mechanizmu odzyskiwania haseł
9.4. Nadużywanie
łatwych
do odgadnięcia identyfikatorów
9.5. Odgadywanie danych do uwierzytelniania
9.6. Wyszukiwanie liczb losowych w aplikacji
9.7. Testowanie liczb losowych
9.8. Nadużywanie powtarzalności
9.9. Nadużywanie operacji powodujących duże obciążenia
9.10. Nadużywanie funkcji ograniczających dostęp do aplikacji
9.11. Nadużywanie sytuacji wyścigu
204
206
207
209
211
213
215
217
219
221
222
10. Ataki przeciwko aplikacjom AJAX ............................................................................225
10.1. Obserwacja
żądań
AJAX „na
żywo”
10.2. Identyfikacja kodu JavaScript w aplikacjach
10.3.
Śledzenie
operacji AJAX do poziomu kodu
źródłowego
10.4. Przechwytywanie i modyfikowanie
żądań
AJAX
10.5. Przechwytywanie i modyfikowanie odpowiedzi serwera
10.6. Wstrzykiwanie danych do aplikacji AJAX
10.7. Wstrzykiwanie danych w formacie XML do aplikacji AJAX
10.8. Wstrzykiwanie danych w formacie JSON do aplikacji AJAX
10.9. Modyfikowanie stanu klienta
10.10. Sprawdzenie możliwości dostępu z innych domen
10.11. Odczytywanie prywatnych danych dzięki przechwytywaniu danych JSON
8
|
Spis treści
227
228
229
230
232
234
236
237
239
240
241
Zgłoś jeśli naruszono regulamin