Black Hat GraphQL. Bezpieczeństwo API dla hakerów i pentesterów - ebook
Black Hat GraphQL. Bezpieczeństwo API dla hakerów i pentesterów - ebook
GraphQL powstał jako alternatywa dla REST API. Charakteryzuje się większą elastycznością, wydajnością i prostotą użytkowania. Technologia ta skupiła na sobie uwagę wielu firm, gdyż umożliwia optymalizację wydajności działania, skalowanie i ułatwia wdrażanie nowych rozwiązań. Rosnąca popularność GraphQL nie idzie jednak w parze z wiedzą o lukach w zabezpieczeniach i exploitach zagrażających API GraphQL.
Dzięki tej książce dowiesz się, jak testować zabezpieczenia API GraphQL technikami ofensywnymi, takimi jak testy penetracyjne. Zdobędziesz i ugruntujesz wiedzę o GraphQL, niezbędną dla analityka bezpieczeństwa czy inżyniera oprogramowania. Nauczysz się skutecznie atakować API GraphQL, co pozwoli Ci wzmocnić procedury, stosować zautomatyzowane testy bezpieczeństwa w potoku ciągłej integracji i wdrażania, a ponadto efektywnie weryfikować mechanizmy zabezpieczeń. Zapoznasz się również z raportami o znalezionych lukach w zabezpieczeniach i przejrzysz kod exploitów, a także przekonasz się, jak wielki wpływ wywierają na działalność przedsiębiorstw.
W książce między innymi:
- zbieranie dokładnych informacji o celu ataku
- zabezpieczanie API przez atakami typu DoS i niebezpiecznymi konfiguracjami serwera GraphQL
- podszywanie się pod użytkownika z uprawnieniami administratora
- wykrywanie luk w zabezpieczeniach w celu atakowania techniką wstrzykiwania kodu
- ataki typu XSS i SSRF, przechwytywanie sesji WebSocket
- pozyskiwanie informacji wrażliwych
Autorzy są wybitnymi inżynierami bezpieczeństwa i współzałożycielami grupy DEFCON Toronto. Nick Aleks specjalizuje się w bezpieczeństwie ofensywnym i od ponad dekady hakuje wszystko, nawet inteligentne budynki. Dolev Farhi prowadzi zespoły inżynierów bezpieczeństwa w branży technologii finansowych. Hobbystycznie analizuje luki w zabezpieczeniach urządzeń IoT, uczestniczy w wyzwaniach CFT i dodaje exploity do bazy danych Exploit Database.
Lektura obowiązkowa dla każdego, kto zajmuje się bezpieczeństwem API!, autor książki Hakowanie interfejsów API. Łamanie interfejsów programowania aplikacji internetowych
Spis treści
O autorach
O redaktorze technicznym
Podziękowania
Wstęp
Wprowadzenie
1. Wprowadzenie do GraphQL
- Podstawy
- Korzenie
- Przykłady zastosowania
- Specyfikacja
- W jaki sposób jest prowadzona komunikacja?
- Schemat
- Zapytania
- Analizator składni zapytania i funkcje resolverów
- Jakie problemy rozwiązuje GraphQL?
- API GraphQL kontra API REST
- Przykład oparty na API REST
- Przykład oparty na GraphQL
- Inne różnice
- Pierwsze zapytanie
- Podsumowanie
2. Przygotowanie laboratorium do pracy z GraphQL
- Środki bezpieczeństwa
- Instalowanie dystrybucji Kali
- Instalowanie klientów internetowych
- Wykonywanie zapytań z poziomu powłoki
- Wykonywanie zapytań za pomocą narzędzia graficznego
- Przygotowanie serwera GraphQL, w którym istnieją luki w zabezpieczeniach
- Instalowanie Dockera
- Wdrożenie aplikacji Damn Vulnerable GraphQL Application
- Testowanie DVGA
- Instalowanie narzędzi przeznaczonych do hakowania GraphQL
- Burp Suite
- Clairvoyance
- InQL
- Graphw00f
- BatchQL
- Nmap
- Commix
- graphql-path-enum
- EyeWitness
- GraphQL Cop
- CrackQL
- Podsumowanie
3. Płaszczyzna ataku na GraphQL
- Czym jest płaszczyzna ataku?
- Język
- Zapytanie, mutacja i subskrypcja
- Nazwa operacji
- Pole
- Argument
- Alias
- Fragment
- Zmienna
- Dyrektywa
- Typy danych
- Obiekt
- Skalar
- Wyliczenie
- Unia
- Interfejs
- Dane wejściowe
- Introspekcja
- Weryfikacja i wykonywanie zapytania
- Najczęściej spotykane słabe strony
- Reguła specyfikacji i słaba strona implementacji
- Odmowa usług
- Ujawnienie informacji
- Błędy w mechanizmach uwierzytelnienia i autoryzacji
- Wstrzykiwanie kodu
- Podsumowanie
4. Rekonesans
- Wykrywanie GraphQL
- Najczęściej stosowane punkty końcowe
- Najczęściej udzielane odpowiedzi na zapytania
- Skanowanie za pomocą narzędzia Nmap
- Pole __typename
- Graphw00f
- Wykrywanie narzędzi GraphiQL Explorer i GraphQL Playground
- Używanie EyeWitness do skanowania pod kątem interfejsów graficznych
- Próba wykonania zapytania za pomocą klienta graficznego
- Sprawdzanie GraphQL za pomocą introspekcji
- Wizualizacja introspekcji za pomocą GraphQL Voyager
- Generowanie za pomocą SpectaQL dokumentacji introspekcji
- Wyszukiwanie informacji w przypadku, gdy introspekcja jest wyłączona
- Sprawdzanie implementacji GraphQL
- Wykrywanie serwera za pomocą Graphw00f
- Analiza wyników
- Podsumowanie
5. Atak typu DoS
- Kierunki ataków typu DoS w GraphQL
- Zapytania cykliczne
- Relacje cykliczne w schemacie GraphQL
- Jak wykrywać relacje cykliczne?
- Luki w zabezpieczeniach związane z zapytaniami cyklicznymi
- Luki w zabezpieczeniach związane z introspekcją cykliczną
- Luki w zabezpieczeniach związane z fragmentami cyklicznymi
- Powielanie pola
- Sposób działania luki związanej z powielaniem pola
- Testowanie pod kątem luk w zabezpieczeniach związanych z powielaniem pola
- Przeciążenie aliasu
- Nadużywanie aliasów na potrzeby ataków typu DoS
- Łączenie aliasów i zapytań cyklicznych
- Przeciążanie dyrektywy
- Nadużywanie dyrektyw w atakach typu DoS
- Testowanie pod kątem luk w zabezpieczeniach związanych z przeciążaniem dyrektywy
- Przeciążanie limitu obiektu
- Grupowanie zapytań za pomocą tablicy
- Zrozumienie sposobu działania grupowania zapytań za pomocą tablicy
- Testowanie pod kątem luk w zabezpieczeniach związanych z grupowaniem zapytań za pomocą tablicy
- Łączenie zapytań cyklicznych i grupowania zapytań za pomocą tablicy
- Używanie BatchQL do wykrycia dostępności grupowania zapytań za pomocą tablicy
- Przeprowadzanie za pomocą narzędzia GraphQL Cop audytu podatności na ataki typu DoS
- Zabezpieczenia GraphQL przed atakami typu DoS
- Analiza kosztu zapytania
- Ograniczenia głębokości zapytania
- Ograniczenia oparte na aliasach i tablicach
- Ograniczenia związane z powielaniem pól
- Ograniczanie liczby zwracanych rekordów
- Lista zapytań dozwolonych
- Automatycznie trwale przechowywane zapytania
- Przekroczenie czasu oczekiwania
- Zapora sieciowa aplikacji internetowej
- Brama działająca jako proxy
- Podsumowanie
6. Ujawnianie informacji
- Identyfikowanie sposobów ujawniania informacji w GraphQL
- Zautomatyzowane wyodrębnianie schematu za pomocą narzędzia InQL
- Jak sobie radzić z wyłączoną introspekcją
- Wykrywanie wyłączonej introspekcji
- Wykorzystanie środowiska innego niż produkcyjne
- Wykorzystanie pola meta __type
- Używanie funkcjonalności sugerowania nazwy pola
- Poznajemy algorytm Edit-Distance
- Optymalizacja używania funkcjonalności sugerowania nazwy pola
- Uwzględnienie kwestii bezpieczeństwa
- Wstawianie listy nazw pól
- Wstawianie listy nazw typów w polu meta __type
- Automatyzacja za pomocą narzędzia Clairvoyance funkcji sugerowania nazwy pola i wstawiania listy nazw
- Nadużywanie komunikatów o błędzie
- Analiza szczegółowego komunikatu o błędzie
- Włączenie debugowania
- Wyodrębnianie informacji ze stosu wywołań
- Ujawnianie informacji za pomocą metody GET
- Podsumowanie
7. Ominięcie uwierzytelnienia i autoryzacji
- Stan uwierzytelnienia i autoryzacji w GraphQL
- Modele wdrożenia in-band i out-of-band
- Najczęściej stosowane podejścia
- Testowanie uwierzytelnienia
- Wykrywanie warstwy uwierzytelnienia
- Ataki typu brute force przeprowadzane na hasła z użyciem funkcjonalności wstawiania listy nazw
- Atak typu brute force na hasło z użyciem narzędzia CrackQL
- Używanie listy nazw dozwolonych operacji
- Podrabianie i wyciekanie danych uwierzytelniających JWT
- Testowanie autoryzacji
- Wykrywanie warstwy autoryzacji
- Sprawdzanie ścieżek za pomocą graphql-path-enum
- Przeprowadzanie za pomocą narzędzia CrackQL ataków typu brute force na argumenty i pola
- Podsumowanie
8. Wstrzykiwanie kodu
- Związane ze wstrzykiwaniem kodu luki w zabezpieczeniach GraphQL
- Pole rażenia danych wejściowych o złośliwym działaniu
- OWASP Top 10
- Płaszczyzna ataku polegającego na wstrzykiwaniu kodu
- Argumenty zapytania
- Argumenty pola
- Argumenty dyrektywy zapytania
- Nazwy operacji
- Punkty dostarczania danych wejściowych
- Wstrzykiwanie kodu SQL
- Poznajemy typy ataków związanych z SQLi
- Testowanie pod kątem luki SQLi
- Testowanie aplikacji DVGA pod kątem luki związanej z SQLi z użyciem oprogramowania Burp Suite
- Automatyzacja ataku polegającego na wstrzykiwaniu kodu SQL
- Wstrzykiwanie polecenia systemu operacyjnego
- Przykład
- Ręczne testowanie aplikacji DVGA
- Zautomatyzowane testowanie z użyciem frameworka Commix
- Analiza kodu funkcji resolvera
- Cross-Site Scripting
- Luka XSS typu odbijana
- Luka XSS typu przechowywana
- Luka XSS oparta na modelu DOM
- Testowanie aplikacji DVGA pod kątem luk XSS
- Podsumowanie
9. Fałszowanie i przechwytywanie żądań
- Atak typu CSRF
- Wyszukiwanie działań, które mogą prowadzić do zmiany stanu
- Sprawdzanie pod kątem luk w zabezpieczeniach związanych z metodami POST
- Automatyczne wysyłanie formularza w trakcie ataku typu CSRF
- Sprawdzanie pod kątem luk w zabezpieczeniach związanych z metodami GET
- Atak polegający na wstrzykiwaniu kodu HTML
- Testowanie automatyczne za pomocą narzędzi BatchQL i GraphQL Cop
- Unikanie ataków typu CSRF
- Atak typu SSRF
- Poznajemy typy ataków SSRF
- Wyszukiwanie podatnych na ataki operacji, pól i argumentów
- Testowanie pod kątem luki SSRF
- Zapobieganie atakom typu SSRF
- Przechwytywanie WebSocket
- Wyszukiwanie operacji subskrypcji
- Przechwytywanie zapytania subskrypcji
- Ochrona przed atakami typu CSWSH
- Podsumowanie
10. Exploity i ujawnione luki w zabezpieczeniach
- Odmowa usług
- Ogromne dane używane podczas ataku
- Wyrażenia regularne (CS Money)
- Zapytanie cykliczne introspekcji (GitLab)
- Aliasy dla powielania pola (Magento)
- Grupowanie zapytań za pomocą tablicy na potrzeby powielania pola (WPGraphQL)
- Fragmenty cykliczne (Agoo)
- Nieprawidłowa autoryzacja
- Umożliwienie dostępu do danych dezaktywowanym użytkownikom (GitLab)
- Pozwolenie nieuprzywilejowanemu pracownikowi firmy na modyfikowanie adresu e-mail użytkownika (Shopify)
- Ujawnienie liczby dozwolonych hakerów za pomocą obiektuteam (HackerOne)
- Odczytywanie notatek prywatnych (GitLab)
- Ujawnienie informacji na temat transakcji płatności (HackerOne)
- Ujawnienie informacji
- Lista użytkowników GraphQL (GitLab)
- Uzyskanie dostępu do zapytania introspekcji za pomocą WebSocket (Nuri)
- Wstrzykiwanie kodu
- Wstrzykiwanie kodu SQL za pomocą parametru zapytania GET (HackerOne)
- Wstrzykiwanie kodu SQL w argumencie Object (Apache SkyWalking)
- Cross-Site Scripting (GraphQL Playground)
- Cross-Site Request Forgery (GitLab)
- Podsumowanie
A. Lista rzeczy do sprawdzenia podczas testowania GraphQL
- Rekonesans
- Odmowa usług
- Ujawnianie informacji
- Uwierzytelnienie i autoryzacja
- Wstrzykiwanie kodu
- Fałszowanie żądań
- Przechwytywanie żądań
B. Zasoby dotyczące bezpieczeństwa GraphQL
- Wskazówki i podpowiedzi dotyczące testów penetracyjnych
- Laboratoria hakerskie do samodzielnego wypróbowania
- Klipy wideo związane z zapewnieniem bezpieczeństwa
Kategoria: | Informatyka |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-1125-3 |
Rozmiar pliku: | 8,3 MB |