# 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](http://www.dneonline.com/calculator.asmx). - **REST APIs (JSON)**: Dokumentacija često dolazi u WADL fajlovima, ali alati poput [Swagger UI](https://swagger.io/tools/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**](https://github.com/erev0s/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/.` 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:///api/trpc/backgroundMigrations.all' \ -H 'Content-Type: application/json' \ -b '' \ --data '{"input":{}}' ``` 3) Izvršiti privilegovane akcije, kao što je ponovno pokretanje zadatka: ```bash curl -s -X POST 'https:///api/trpc/backgroundMigrations.retry' \ -H 'Content-Type: application/json' \ -b '' \ --data '{"input":{"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**](https://github.com/assetnote/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**](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**](https://github.com/blst-security/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](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). - **API Security Checklist**: Sveobuhvatna kontrolna lista za osiguravanje API-ja ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). - **Logger++ Filters**: Za otkrivanje ranjivosti API-ja, Logger++ nudi korisne filtere ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - **API Endpoints List**: Kurirana lista potencijalnih API endpoints za potrebe testiranja ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## Reference - [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) - [How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study](https://www.depthfirst.com/post/how-an-authorization-flaw-reveals-a-common-security-blind-spot-cve-2025-59305-case-study) {{#include ../../banners/hacktricks-training.md}}