Black Hat GraphQL. Bezpiecze - Helion
ebook
Autor: Nick Aleks, Dolev FarhiTytuł oryginału: Black Hat GraphQL: API Attacks for Hackers and Pentesters
Tłumaczenie: Robert G
ISBN: 978-83-289-1125-3
stron: 328, Format: ebook
Data wydania: 2024-08-13
Księgarnia: Helion
Cena książki: 47,40 zł (poprzednio: 79,00 zł)
Oszczędzasz: 40% (-31,60 zł)
Tagi: API
Osoby które kupowały "Black Hat GraphQL. Bezpiecze", wybierały także:
- Platforma Xamarin. Kurs video. Poziom drugi. Zaawansowane techniki tworzenia aplikacji cross-platform 99,00 zł, (39,60 zł -60%)
- Angular 11. Kurs video. Poznaj moc tworzenia aplikacji typu SPA 129,00 zł, (58,05 zł -55%)
- OpenGL. Kurs video. Wprowadzenie do programowania grafiki komputerowej 99,00 zł, (44,55 zł -55%)
- Tao mikrousług. Projektowanie i wdrażanie 58,98 zł, (29,49 zł -50%)
- Facebook Graph API. Tworzenie rozbudowanych rozwiązań we Flashu 47,00 zł, (23,50 zł -50%)
Spis treści
Black Hat GraphQL. Bezpieczeństwo API dla hakerów i pentesterów eBook -- 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