mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
7.3 KiB
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)
- Registrujte običan nalog i obezbedite autentifikovanu sesiju (cookies/headers).
- 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":{}}'
- 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
- https://github.com/Cyber-Guy1/API-SecurityEmpire
- How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
{{#include ../../banners/hacktricks-training.md}}