Web API Pentesting

Reading time: 6 minutes

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Podsumowanie metodyki pentestingu API

Pentesting API wymaga uporządkowanego podejścia do odkrywania podatności. Ten przewodnik zawiera kompleksową metodykę, kładąc nacisk na praktyczne techniki i narzędzia.

Zrozumienie typów API

  • SOAP/XML Web Services: Wykorzystują format WSDL do dokumentacji, zazwyczaj dostępny pod ścieżkami ?wsdl. Narzędzia takie jak SOAPUI i WSDLer (Burp Suite Extension) są przydatne do parsowania i generowania żądań. Przykładowa dokumentacja jest dostępna na DNE Online.
  • REST APIs (JSON): Dokumentacja często występuje w plikach WADL, a narzędzia takie jak Swagger UI oferują wygodniejszy interfejs do interakcji. Postman jest przydatnym narzędziem do tworzenia i zarządzania przykładowymi żądaniami.
  • GraphQL: Język zapytań dla API, który oferuje pełny i zrozumiały opis danych w API.

Laboratoria praktyczne

  • VAmPI: Celowo podatne API do praktycznych ćwiczeń, obejmujące OWASP top 10 podatności API.

Skuteczne techniki dla pentestingu API

  • SOAP/XML Vulnerabilities: Poszukaj podatności XXE, chociaż deklaracje DTD są często ograniczone. Tagi CDATA mogą umożliwić wstawienie ładunku, jeśli XML pozostaje ważny.
  • Privilege Escalation: Testuj endpointy z różnymi poziomami uprawnień, aby zidentyfikować możliwości nieautoryzowanego dostępu.
  • CORS Misconfigurations: Sprawdź ustawienia CORS pod kątem potencjalnego wykorzystania przez ataki CSRF z uwierzytelnionych sesji.
  • Endpoint Discovery: Wykorzystaj wzorce API do odkrywania ukrytych endpointów. Narzędzia takie jak fuzzers mogą zautomatyzować ten proces.
  • Parameter Tampering: Eksperymentuj z dodawaniem lub zamianą parametrów w żądaniach, aby uzyskać dostęp do nieautoryzowanych danych lub funkcji.
  • HTTP Method Testing: Zmieniaj metody żądań (GET, POST, PUT, DELETE, PATCH), aby odkryć nieoczekiwane zachowania lub ujawnienia informacji.
  • Content-Type Manipulation: Przełączaj się między różnymi typami treści (x-www-form-urlencoded, application/xml, application/json), aby testować problemy z parsowaniem lub podatności.
  • Advanced Parameter Techniques: Testuj niespodziewane typy danych w payloadach JSON lub manipuluj danymi XML w celu XXE. Również spróbuj parameter pollution i znaków wieloznacznych dla szerszych testów.
  • Version Testing: Starsze wersje API mogą być bardziej podatne na ataki. Zawsze sprawdzaj i testuj przeciwko wielu wersjom API.

Autoryzacja i logika biznesowa (AuthN != AuthZ) — pułapki tRPC/Zod protectedProcedure

Nowoczesne stosy TypeScript często używają tRPC z Zod do walidacji wejścia. W tRPC protectedProcedure zazwyczaj zapewnia, że żądanie ma ważną sesję (uwierzytelnienie), ale nie oznacza, że wywołujący ma odpowiednią rolę/uprawnienia (autoryzacja). Ta niezgodność prowadzi do Broken Function Level Authorization/BOLA, jeśli wrażliwe procedury są zabezpieczone tylko przez protectedProcedure.

  • Model zagrożenia: Każdy uwierzytelniony użytkownik o niskich uprawnieniach może wywołać procedury przeznaczone dla administratora, jeśli brakuje sprawdzeń ról (np. migracje w tle, feature flags, tenant-wide maintenance, job control).
  • Sygnalizacja w black-box: endpointy POST /api/trpc/<router>.<procedure> które zwracają sukces dla podstawowych kont, gdy powinny być dostępne tylko dla administratorów. Samoobsługowe rejestracje (self-serve signups) drastycznie zwiększają możliwość ich wykorzystania.
  • Typowy kształt trasy tRPC (v10+): ciało JSON opakowane w {"input": {...}}.

Przykładowy podatny wzorzec (brak bramki ról/uprawnień):

ts
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),

Praktyczna eksploatacja (black-box)

  1. Zarejestruj zwykłe konto i uzyskaj uwierzytelnioną sesję (cookies/headers).
  2. Enumeruj background jobs lub inne wrażliwe zasoby za pomocą procedur “list”/“all”/“status”.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. Wywołaj uprzywilejowane akcje, takie jak ponowne uruchomienie joba:
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'

Impact to assess

  • Uszkodzenie danych wskutek nie-idempotentnych restartów: Wymuszanie równoległych uruchomień migrations/workers może tworzyć race conditions i powodować niespójne, częściowe stany (ciche utraty danych, uszkodzona analityka).
  • DoS przez wyczerpanie worker/DB: Powtarzane wywoływanie ciężkich zadań może wyczerpać pule workerów i połączenia do bazy danych, powodując przestoje obejmujące wszystkich tenantów.

Narzędzia i zasoby dla API Pentesting

  • kiterunner: Doskonały do odkrywania endpointów API. Użyj go do skanowania i przeprowadzania brute force na ścieżkach i parametrach wobec docelowych API.
bash
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
  • https://github.com/BishopFox/sj: sj to narzędzie wiersza poleceń zaprojektowane, aby pomagać w audycie exposed Swagger/OpenAPI definition files poprzez sprawdzanie powiązanych API endpoints pod kątem słabego uwierzytelniania. Dostarcza także szablony poleceń do ręcznego testowania podatności.
  • Dodatkowe narzędzia takie jak automatic-api-attack-tool, Astra, i restler-fuzzer oferują wyspecjalizowane funkcje do testów bezpieczeństwa API, od symulacji ataków po fuzzing i skanowanie podatności.
  • Cherrybomb: To narzędzie do bezpieczeństwa API, które audytuje Twoje API na podstawie pliku OAS (narzędzie napisane w rust).

Zasoby do nauki i ćwiczeń

  • OWASP API Security Top 10: Podstawowa lektura do zrozumienia typowych podatności w API (OWASP Top 10).
  • API Security Checklist: Kompletna lista kontrolna zabezpieczania API (GitHub link).
  • Logger++ Filters: Do wykrywania podatności w API, Logger++ oferuje przydatne filtry (GitHub link).
  • API Endpoints List: Kuratorowana lista potencjalnych API endpoints do celów testowych (GitHub gist).

References

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks