7.3 KiB

Web API Pentesting

{{#include ../../banners/hacktricks-training.md}}

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):

// 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.
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:
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.
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

{{#include ../../banners/hacktricks-training.md}}