Web API Pentesting

Reading time: 6 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

API Pentesting Methodology Summary

Pentesting APIs zahteva strukturisan pristup za otkrivanje ranjivosti. Ovaj vodič sažima sveobuhvatnu metodologiju, sa naglaskom na praktične tehnike i alate.

Understanding API Types

  • SOAP/XML Web Services: Koriste WSDL format za dokumentaciju, obično dostupan na ?wsdl putanjama. Alati kao što su SOAPUI i WSDLer (Burp Suite Extension) su korisni za parsiranje i generisanje zahteva. Primer dokumentacije dostupan je na DNE Online.
  • REST APIs (JSON): Dokumentacija često dolazi u WADL fajlovima, ali alati poput Swagger UI obezbeđuju pristupačniji interfejs za interakciju. Postman je vredan alat za kreiranje i upravljanje primerima zahteva.
  • GraphQL: Je query language za API-je koji pruža potpun i razumljiv opis podataka u vašem API-ju.

Practice Labs

  • VAmPI: Namerno ranjiv API za praktičnu vežbu, pokrivajući OWASP top 10 API ranjivosti.

Effective Tricks for API Pentesting

  • SOAP/XML Vulnerabilities: Istražite XXE ranjivosti, iako su DTD deklaracije često ograničene. CDATA tagovi mogu dozvoliti umetanje payload-a ako XML ostane validan.
  • Privilege Escalation: Testirajte endpoint-e sa različitim nivoima privilegija da identifikujete mogućnosti neautorizovanog pristupa.
  • CORS Misconfigurations: Ispitajte CORS podešavanja zbog potencijalne iskoristivosti kroz CSRF napade iz autentifikovanih sesija.
  • Endpoint Discovery: Iskoristite obrasce API-ja za otkrivanje skrivenih endpoint-a. Alati poput fuzzer-a mogu automatizovati ovaj proces.
  • Parameter Tampering: Eksperimentišite sa dodavanjem ili zamenom parametara u zahtevima da biste pristupili neautorizovanim podacima ili funkcionalnostima.
  • HTTP Method Testing: Menjajte metode zahteva (GET, POST, PUT, DELETE, PATCH) da otkrijete neočekivana ponašanja ili curenja informacija.
  • Content-Type Manipulation: Prebacujte se između različitih content-type-a (x-www-form-urlencoded, application/xml, application/json) da testirate probleme sa parsiranjem ili ranjivosti.
  • Advanced Parameter Techniques: Testirajte sa neočekivanim tipovima podataka u JSON payload-ima ili se igrajte sa XML podacima za XXE injekcije. Takođe, isprobajte parameter pollution i wildcard karaktere za šire testiranje.
  • Version Testing: Starije verzije API-ja mogu biti podložnije napadima. Uvek proverite i testirajte protiv više verzija API-ja.

Autorizacija i poslovna logika (AuthN != AuthZ) — tRPC/Zod protectedProcedure zamke

Moderni TypeScript stack-ovi često koriste tRPC sa Zod za validaciju input-a. U tRPC-u, protectedProcedure obično osigurava da zahtev ima validnu sesiju (autentikaciju) ali ne implicira da pozivalac ima odgovarajuću rolu/permision (autorizaciju). Ova neusaglašenost dovodi do Broken Function Level Authorization/BOLA ako su osetljive procedure zaštićene samo pomoću protectedProcedure.

  • Threat model: Bilo koji autentifikovani korisnik sa niskim privilegijama može pozvati procedure namenjene adminu ako nedostaju provere role/permisiona (npr. background migrations, feature flags, tenant-wide maintenance, job control).
  • Black-box signal: POST /api/trpc/<router>.<procedure> endpoint-i koji uspevaju za osnovne naloge kada bi trebali biti samo za admin-e. Samouslužna registracija znatno povećava mogućnost eksploatacije.
  • Typical tRPC route shape (v10+): JSON body wrapped under {"input": {...}}.

Example vulnerable pattern (no role/permission gate):

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
}),

Praktična eksploatacija (black-box)

  1. Registrujte običan nalog i obezbedite autentifikovanu sesiju (cookies/headers).
  2. Enumerišite pozadinske poslove ili druge osetljive resurse putem “list”/“all”/“status” procedura.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. Izvršiti privilegovane akcije, kao što je ponovno pokretanje zadatka:
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

  • Oštećenje podataka usled ponovnih pokretanja koja nisu idempotentna: Forsiranje istovremenih izvršavanja migrations/workers može izazvati race conditions i nedosledna parcijalna stanja (neprimetan gubitak podataka, pokvarena analitika).
  • DoS putem iscrpljivanja worker/DB resursa: Ponavljanim pokretanjem teških poslova može se iscrpeti pool worker-a i konekcije prema bazi podataka, izazivajući prekide usluge za ceo tenant.

Alati i resursi za API Pentesting

  • kiterunner: Odličan za otkrivanje API endpoint-a. Koristite ga za skeniranje i brute force putanja i parametara protiv ciljnih API-ja.
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 je command line alat dizajniran da pomogne pri auditu izloženih Swagger/OpenAPI definition files proverom povezanih API endpoints za slabu autentifikaciju. Takođe pruža šablone komandi za manuelno testiranje ranjivosti.
  • Dodatni alati kao što su automatic-api-attack-tool, Astra, i restler-fuzzer pružaju specijalizovane funkcionalnosti za API security testing, od simulacije napada do fuzzing-a i skeniranja ranjivosti.
  • Cherrybomb: To je API security alat koji vrši audit vašeg API-ja na osnovu OAS fajla (alat je napisan u Rust).

Resursi za učenje i vežbu

  • OWASP API Security Top 10: Neophodno štivo za razumevanje uobičajenih ranjivosti API-ja (OWASP Top 10).
  • API Security Checklist: Sveobuhvatna kontrolna lista za osiguravanje API-ja (GitHub link).
  • Logger++ Filters: Za otkrivanje ranjivosti API-ja, Logger++ nudi korisne filtere (GitHub link).
  • API Endpoints List: Kurirana lista potencijalnih API endpoints za potrebe testiranja (GitHub gist).

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks