E-book details

Testowanie bezpieczeństwa aplikacji internetowych. Receptury

Testowanie bezpieczeństwa aplikacji internetowych. Receptury

Paco Hope, Ben Walther

Ebook

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!

Słowo wstępne (11)

Przedmowa (13)

1. Wprowadzenie (23)

  • 1.1. Co to jest testowanie zabezpieczeń? (23)
  • 1.2. Czym są aplikacje internetowe? (27)
  • 1.3. Podstawowe pojęcia dotyczące aplikacji internetowych (31)
  • 1.4. Testowanie zabezpieczeń aplikacji internetowej (36)
  • 1.5. Zasadnicze pytanie brzmi: "Jak" (37)

2. Instalacja darmowych narzędzi (41)

  • 2.1. Instalacja przeglądarki Firefox (42)
  • 2.2. Instalacja rozszerzeń przeglądarki Firefox (42)
  • 2.3. Instalacja rozszerzenia Firebug (43)
  • 2.4. Instalacja programu WebScarab grupy OWASP (44)
  • 2.5. Instalowanie Perla i pakietów w systemie Windows (45)
  • 2.6. Instalacja Perla i korzystanie z repozytorium CPAN w systemie Linux (46)
  • 2.7. Instalacja narzędzia CAL9000 (47)
  • 2.8. Instalacja narzędzia ViewState Decoder (47)
  • 2.9. Instalacja cURL (48)
  • 2.10. Instalacja narzędzia Pornzilla (49)
  • 2.11. Instalacja środowiska Cygwin (49)
  • 2.12. Instalacja narzędzia Nikto 2 (51)
  • 2.13. Instalacja zestawu narzędzi Burp Suite (52)
  • 2.14. Instalacja serwera HTTP Apache (53)

3. Prosta obserwacja (55)

  • 3.1. Przeglądanie źródła HTML strony (56)
  • 3.2. Zaawansowane przeglądanie kodu źródłowego (58)
  • 3.3. Obserwacja nagłówków żądań "na żywo" za pomocą dodatku Firebug (60)
  • 3.4. Obserwacja danych POST "na żywo" za pomocą narzędzia WebScarab (64)
  • 3.5. Oglądanie ukrytych pól formularza (68)
  • 3.6. Obserwacja nagłówków odpowiedzi "na żywo" za pomocą dodatku TamperData (69)
  • 3.7. Podświetlanie kodu JavaScript i komentarzy (71)
  • 3.8. Wykrywanie zdarzeń JavaScript (73)
  • 3.9. Modyfikowanie specyficznych atrybutów elementów (74)
  • 3.10. Dynamiczne śledzenie atrybutów elementów (76)
  • 3.11. Wnioski (78)

4. Kodowanie danych w internecie (79)

  • 4.1. Rozpoznawanie binarnych reprezentacji danych (80)
  • 4.2. Korzystanie z danych Base64 (82)
  • 4.3. Konwersja liczb zakodowanych w Base36 na stronie WWW (84)
  • 4.4. Korzystanie z danych Base36 w Perlu (85)
  • 4.5. Wykorzystanie danych kodowanych w URL (85)
  • 4.6. Wykorzystywanie danych w formacie encji HTML (88)
  • 4.7. Wyliczanie skrótów (89)
  • 4.8. Rozpoznawanie formatów czasowych (91)
  • 4.9. Programowe kodowanie wartości oznaczających czas (93)
  • 4.10. Dekodowanie wartości ViewState języka ASP.NET (94)
  • 4.11. Dekodowanie danych zakodowanych wielokrotnie (96)

5. Manipulowanie danymi wejściowymi (99)

  • 5.1. Przechwytywanie i modyfikowanie żądań POST (100)
  • 5.2. Obejścia ograniczeń pól wejściowych (103)
  • 5.3. Modyfikowanie adresu URL (104)
  • 5.4. Automatyzacja modyfikowania adresów URL (107)
  • 5.5. Testowanie obsługi długich adresów URL (108)
  • 5.6. Edycja plików cookie (110)
  • 5.7. Fałszowanie informacji przesyłanych przez przeglądarki w nagłówkach (112)
  • 5.8. Przesyłanie na serwer plików o złośliwych nazwach (115)
  • 5.9. Przesyłanie na serwer plików o dużej objętości (117)
  • 5.10. Przesyłanie plików XML o złośliwej zawartości (118)
  • 5.11. Przesyłanie plików XML o złośliwej strukturze (120)
  • 5.12. Przesyłanie złośliwych plików ZIP (122)
  • 5.13. Przesyłanie na serwer przykładowych plików wirusów (123)
  • 5.14. Obchodzenie ograniczeń interfejsu użytkownika (124)

6. Automatyzacja masowego skanowania (127)

  • 6.1. Przeglądanie serwisu WWW za pomocą programu WebScarab (128)
  • 6.2. Przekształcanie wyników działania programów typu pająk do postaci listy inwentaryzacyjnej (130)
  • 6.3. Redukowanie listy adresów URL do testowania (133)
  • 6.4. Wykorzystanie arkusza kalkulacyjnego do redukcji listy (134)
  • 6.5. Tworzenie kopii lustrzanej serwisu WWW za pomocą programu LWP (134)
  • 6.6. Tworzenie kopii lustrzanej serwisu WWW za pomocą polecenia wget (136)
  • 6.7. Tworzenie kopii lustrzanej specyficznych elementów za pomocą polecenia wget (138)
  • 6.8. Skanowanie serwisu WWW za pomocą programu Nikto (138)
  • 6.9. Interpretacja wyników programu Nikto (140)
  • 6.10. Skanowanie serwisów HTTPS za pomocą programu Nikto (142)
  • 6.11. Używanie programu Nikto z uwierzytelnianiem (143)
  • 6.12. Uruchamianie Nikto w określonym punkcie startowym (144)
  • 6.13. Wykorzystywanie specyficznego pliku cookie sesji z programem Nikto (145)
  • 6.14. Testowanie usług sieciowych za pomocą programu WSFuzzer (146)
  • 6.15. Interpretacja wyników programu WSFuzzer (148)

7. Automatyzacja wybranych zadań z wykorzystaniem cURL (151)

  • 7.1. Pobieranie strony za pomocą cURL (152)
  • 7.2. Pobieranie wielu odmian strony spod adresu URL (153)
  • 7.3. Automatyczne śledzenie przekierowań (154)
  • 7.4. Wykorzystanie cURL do testowania podatności na ataki za pomocą skryptów krzyżowych (155)
  • 7.5. Wykorzystanie cURL do testowania podatności na ataki typu "przechodzenie przez katalog" (158)
  • 7.6. Naśladowanie specyficznego typu przeglądarki lub urządzenia (161)
  • 7.7. Interaktywne naśladowanie innego urządzenia (162)
  • 7.8. Imitowanie wyszukiwarki za pomocą cURL (165)
  • 7.9. Pozorowanie przepływu poprzez fałszowanie nagłówków referer (166)
  • 7.10. Pobieranie samych nagłówków HTTP (167)
  • 7.11. Symulacja żądań POST za pomocą cURL (168)
  • 7.12. Utrzymywanie stanu sesji (169)
  • 7.13. Modyfikowanie plików cookie (171)
  • 7.14. Przesyłanie pliku na serwer za pomocą cURL (171)
  • 7.15. Tworzenie wieloetapowego przypadku testowego (172)
  • 7.16. Wnioski (177)

8. Automatyzacja zadań z wykorzystaniem biblioteki LibWWWPerl (179)

  • 8.1. Napisanie prostego skryptu Perla do pobierania strony (180)
  • 8.2. Programowe modyfikowanie parametrów (181)
  • 8.3. Symulacja wprowadzania danych za pośrednictwem formularzy z wykorzystaniem żądań POST (183)
  • 8.4. Przechwytywanie i zapisywanie plików cookie (184)
  • 8.5. Sprawdzanie ważności sesji (185)
  • 8.6. Testowanie podatności na wymuszenia sesji (188)
  • 8.7. Wysyłanie złośliwych wartości w plikach cookie (190)
  • 8.8. Przesyłanie na serwer złośliwej zawartości plików (192)
  • 8.9. Przesyłanie na serwer plików o złośliwych nazwach (193)
  • 8.10. Przesyłanie wirusów do aplikacji (195)
  • 8.11. Parsowanie odpowiedzi za pomocą skryptu Perla w celu sprawdzenia odczytanych wartości (197)
  • 8.12. Programowa edycja strony (198)
  • 8.13. Wykorzystanie wątków do poprawy wydajności (200)

9. Wyszukiwanie wad projektu (203)

  • 9.1. Pomijanie obowiązkowych elementów nawigacji (204)
  • 9.2. Próby wykonywania uprzywilejowanych operacji (206)
  • 9.3. Nadużywanie mechanizmu odzyskiwania haseł (207)
  • 9.4. Nadużywanie łatwych do odgadnięcia identyfikatorów (209)
  • 9.5. Odgadywanie danych do uwierzytelniania (211)
  • 9.6. Wyszukiwanie liczb losowych w aplikacji (213)
  • 9.7. Testowanie liczb losowych (215)
  • 9.8. Nadużywanie powtarzalności (217)
  • 9.9. Nadużywanie operacji powodujących duże obciążenia (219)
  • 9.10. Nadużywanie funkcji ograniczających dostęp do aplikacji (221)
  • 9.11. Nadużywanie sytuacji wyścigu (222)

10. Ataki przeciwko aplikacjom AJAX (225)

  • 10.1. Obserwacja żądań AJAX "na żywo" (227)
  • 10.2. Identyfikacja kodu JavaScript w aplikacjach (228)
  • 10.3. Śledzenie operacji AJAX do poziomu kodu źródłowego (229)
  • 10.4. Przechwytywanie i modyfikowanie żądań AJAX (230)
  • 10.5. Przechwytywanie i modyfikowanie odpowiedzi serwera (232)
  • 10.6. Wstrzykiwanie danych do aplikacji AJAX (234)
  • 10.7. Wstrzykiwanie danych w formacie XML do aplikacji AJAX (236)
  • 10.8. Wstrzykiwanie danych w formacie JSON do aplikacji AJAX (237)
  • 10.9. Modyfikowanie stanu klienta (239)
  • 10.10. Sprawdzenie możliwości dostępu z innych domen (240)
  • 10.11. Odczytywanie prywatnych danych dzięki przechwytywaniu danych JSON (241)

11. Manipulowanie sesjami (245)

  • 11.1. Wyszukiwanie identyfikatorów sesji w plikach cookie (246)
  • 11.2. Wyszukiwanie identyfikatorów sesji w żądaniach (248)
  • 11.3. Wyszukiwanie nagłówków autoryzacji (249)
  • 11.4. Analiza terminu ważności sesji (252)
  • 11.5. Analiza identyfikatorów sesji za pomocą programu Burp (256)
  • 11.6. Analiza losowości sesji za pomocą programu WebScarab (258)
  • 11.7. Zmiany sesji w celu uniknięcia ograniczeń (262)
  • 11.8. Podszywanie się pod innego użytkownika (264)
  • 11.9. Preparowanie sesji (265)
  • 11.10. Testowanie pod kątem podatności na ataki CSRF (266)

12. Testy wielostronne (269)

  • 12.1. Wykradanie plików cookie za pomocą ataków XSS (269)
  • 12.2. Tworzenie nakładek za pomocą ataków XSS (271)
  • 12.3. Tworzenie żądań HTTP za pomocą ataków XSS (273)
  • 12.4. Interaktywne wykonywanie ataków XSS bazujących na modelu DOM (274)
  • 12.5. Pomijanie ograniczeń długości pola (XSS) (276)
  • 12.6. Interaktywne przeprowadzanie ataków XST (277)
  • 12.7. Modyfikowanie nagłówka Host (279)
  • 12.8. Odgadywanie nazw użytkowników i haseł metodą siłową (281)
  • 12.9. Interaktywne przeprowadzanie ataków wstrzykiwania kodu w instrukcji włączania skryptów PHP (283)
  • 12.10. Tworzenie bomb dekompresji (285)
  • 12.11. Interaktywne przeprowadzanie ataków wstrzykiwania poleceń systemu operacyjnego (286)
  • 12.12. Systemowe przeprowadzanie ataków wstrzykiwania poleceń systemu operacyjnego (288)
  • 12.13. Interaktywne przeprowadzanie ataków wstrzykiwania instrukcji XPath (291)
  • 12.14. Interaktywne przeprowadzanie ataków wstrzykiwania SSI (293)
  • 12.15. Systemowe przeprowadzanie ataków wstrzykiwania SSI (294)
  • 12.16. Interaktywne przeprowadzanie ataków wstrzykiwania LDAP (296)
  • 12.17. Interaktywne przeprowadzanie ataków wstrzykiwania zapisów w dziennikach (298)

Skorowidz (301)

  • Title: Testowanie bezpieczeństwa aplikacji internetowych. Receptury
  • Author: Paco Hope, Ben Walther
  • Original title: Web Security Testing Cookbook
  • Translation: Radosław Meryk
  • ISBN: 978-83-246-5864-0, 9788324658640
  • Date of issue: 2012-07-13
  • Format: Ebook
  • Item ID: tebeap
  • Publisher: Helion