# Web API Pentesting {{#include ../../banners/hacktricks-training.md}} ## API Pentesting Metodologija - Sažetak Pentesting API-ja uključuje strukturirani pristup otkrivanju ranjivosti. Ovaj vodič obuhvata sveobuhvatnu metodologiju, naglašavajući praktične tehnike i alate. ### **Razumevanje Tipova API-ja** - **SOAP/XML Web Servisi**: Koriste WSDL format za dokumentaciju, obično se nalaze na `?wsdl` putanjama. Alati kao što su **SOAPUI** i **WSDLer** (Burp Suite Extension) su ključni za parsiranje i generisanje zahteva. Primer dokumentacije je dostupan na [DNE Online](http://www.dneonline.com/calculator.asmx). - **REST API (JSON)**: Dokumentacija često dolazi u WADL datotekama, ali alati kao što je [Swagger UI](https://swagger.io/tools/swagger-ui/) pružaju korisnički prijatniji interfejs za interakciju. **Postman** je koristan alat za kreiranje i upravljanje primerima zahteva. - **GraphQL**: Jezik upita za API-je koji nudi potpunu i razumljivu opis podataka u vašem API-ju. ### **Praktične Laboratorije** - [**VAmPI**](https://github.com/erev0s/VAmPI): Namerno ranjiv API za praktičnu obuku, pokrivajući OWASP top 10 API ranjivosti. ### **Efikasne Tehnike za API Pentesting** - **SOAP/XML Ranjivosti**: Istražite XXE ranjivosti, iako su DTD deklaracije često ograničene. CDATA tagovi mogu omogućiti umetanje payload-a ako XML ostane validan. - **Povećanje Privilegija**: Testirajte krajnje tačke sa različitim nivoima privilegija kako biste identifikovali mogućnosti neovlašćenog pristupa. - **CORS Pogrešne Konfiguracije**: Istražite CORS podešavanja za potencijalnu iskoristivost kroz CSRF napade iz autentifikovanih sesija. - **Otkriće Krajnjih Tačaka**: Iskoristite API obrasce za otkrivanje skrivenih krajnjih tačaka. Alati kao što su fuzzers mogu automatizovati ovaj proces. - **Manipulacija Parametrima**: Eksperimentišite sa dodavanjem ili zamenom parametara u zahtevima kako biste pristupili neovlašćenim podacima ili funkcionalnostima. - **Testiranje HTTP Metoda**: Varirajte metode zahteva (GET, POST, PUT, DELETE, PATCH) kako biste otkrili neočekivana ponašanja ili otkrivanje informacija. - **Manipulacija Content-Type**: Prebacujte se između različitih tipova sadržaja (x-www-form-urlencoded, application/xml, application/json) kako biste testirali probleme sa parsiranjem ili ranjivosti. - **Napredne Tehnike Parametara**: Testirajte sa neočekivanim tipovima podataka u JSON payload-ima ili se igrajte sa XML podacima za XXE injekcije. Takođe, pokušajte sa zagađenjem parametara i karakterima sa zvezdicom za šire testiranje. - **Testiranje Verzija**: Starije verzije API-ja mogu biti podložnije napadima. Uvek proverite i testirajte protiv više verzija API-ja. ### **Alati i Resursi za API Pentesting** - [**kiterunner**](https://github.com/assetnote/kiterunner): Odličan za otkrivanje API krajnjih tačaka. Koristite ga za skeniranje i brute force putanja i parametara protiv ciljanih 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 alat za komandnu liniju dizajniran da pomogne u reviziji **izloženih Swagger/OpenAPI definicija** proverom povezanih API krajnjih tačaka na slabu autentifikaciju. Takođe pruža šablone komandi za ručno testiranje ranjivosti. - Dodatni alati kao što su **automatic-api-attack-tool**, **Astra** i **restler-fuzzer** nude prilagođene funkcionalnosti za testiranje sigurnosti API-ja, od simulacije napada do fuzzinga i skeniranja ranjivosti. - [**Cherrybomb**](https://github.com/blst-security/cherrybomb): To je alat za sigurnost API-ja koji vrši reviziju vašeg API-ja na osnovu OAS datoteke (alat napisan u rustu). ### **Resursi za učenje i praksu** - **OWASP API Security Top 10**: Osnovno š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 lista za osiguranje API-ja ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). - **Logger++ Filters**: Za pronalaženje ranjivosti API-ja, Logger++ nudi korisne filtre ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - **API Endpoints List**: Kurirana lista potencijalnih API krajnjih tačaka za testiranje ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## Reference - [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) {{#include ../../banners/hacktricks-training.md}}