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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
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ń):
// 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)
- Zarejestruj zwykłe konto i uzyskaj uwierzytelnioną sesję (cookies/headers).
- Enumeruj background jobs lub inne wrażliwe zasoby za pomocą procedur “list”/“all”/“status”.
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- Wywołaj uprzywilejowane akcje, takie jak ponowne uruchomienie joba:
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.
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
- https://github.com/Cyber-Guy1/API-SecurityEmpire
- How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.