# Web API Pentesting {{#include ../../banners/hacktricks-training.md}} ## Riepilogo della Metodologia di Pentesting API Il pentesting delle API implica un approccio strutturato per scoprire vulnerabilità. Questa guida racchiude una metodologia completa, enfatizzando tecniche e strumenti pratici. ### **Comprendere i Tipi di API** - **SOAP/XML Web Services**: Utilizzano il formato WSDL per la documentazione, tipicamente trovato nei percorsi `?wsdl`. Strumenti come **SOAPUI** e **WSDLer** (Estensione di Burp Suite) sono strumentali per analizzare e generare richieste. La documentazione di esempio è accessibile su [DNE Online](http://www.dneonline.com/calculator.asmx). - **REST APIs (JSON)**: La documentazione spesso è disponibile in file WADL, tuttavia strumenti come [Swagger UI](https://swagger.io/tools/swagger-ui/) forniscono un'interfaccia più user-friendly per l'interazione. **Postman** è uno strumento prezioso per creare e gestire richieste di esempio. - **GraphQL**: Un linguaggio di query per API che offre una descrizione completa e comprensibile dei dati nella tua API. ### **Laboratori Pratici** - [**VAmPI**](https://github.com/erev0s/VAmPI): Un'API deliberatamente vulnerabile per esercitazioni pratiche, coprendo le 10 vulnerabilità API principali di OWASP. ### **Trucchi Efficaci per il Pentesting delle API** - **Vulnerabilità SOAP/XML**: Esplora le vulnerabilità XXE, sebbene le dichiarazioni DTD siano spesso limitate. I tag CDATA possono consentire l'inserimento di payload se l'XML rimane valido. - **Escalation dei Privilegi**: Testa gli endpoint con diversi livelli di privilegio per identificare possibilità di accesso non autorizzato. - **Misconfigurazioni CORS**: Indaga le impostazioni CORS per potenziali sfruttamenti attraverso attacchi CSRF da sessioni autenticate. - **Scoperta degli Endpoint**: Sfrutta i modelli API per scoprire endpoint nascosti. Strumenti come i fuzzers possono automatizzare questo processo. - **Manipolazione dei Parametri**: Sperimenta con l'aggiunta o la sostituzione di parametri nelle richieste per accedere a dati o funzionalità non autorizzate. - **Testing dei Metodi HTTP**: Varia i metodi di richiesta (GET, POST, PUT, DELETE, PATCH) per scoprire comportamenti inaspettati o divulgazioni di informazioni. - **Manipolazione del Content-Type**: Passa tra diversi tipi di contenuto (x-www-form-urlencoded, application/xml, application/json) per testare problemi di parsing o vulnerabilità. - **Tecniche Avanzate sui Parametri**: Testa con tipi di dati inaspettati nei payload JSON o gioca con i dati XML per iniezioni XXE. Prova anche la contaminazione dei parametri e i caratteri jolly per test più ampi. - **Testing delle Versioni**: Le versioni API più vecchie potrebbero essere più suscettibili agli attacchi. Controlla sempre e testa contro più versioni API. ### **Strumenti e Risorse per il Pentesting delle API** - [**kiterunner**](https://github.com/assetnote/kiterunner): Eccellente per scoprire endpoint API. Usalo per scansionare e forzare percorsi e parametri contro le API target. ```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 è uno strumento da riga di comando progettato per assistere nell'audit dei **file di definizione Swagger/OpenAPI esposti** controllando gli endpoint API associati per autenticazione debole. Fornisce anche modelli di comando per il testing manuale delle vulnerabilità. - Strumenti aggiuntivi come **automatic-api-attack-tool**, **Astra** e **restler-fuzzer** offrono funzionalità su misura per il testing della sicurezza delle API, che vanno dalla simulazione di attacchi al fuzzing e alla scansione delle vulnerabilità. - [**Cherrybomb**](https://github.com/blst-security/cherrybomb): È uno strumento di sicurezza API che esamina la tua API basandosi su un file OAS (lo strumento è scritto in rust). ### **Risorse per Apprendimento e Pratica** - **OWASP API Security Top 10**: Lettura essenziale per comprendere le vulnerabilità comuni delle API ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). - **API Security Checklist**: Un elenco completo per la sicurezza delle API ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). - **Logger++ Filters**: Per la ricerca di vulnerabilità API, Logger++ offre filtri utili ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - **API Endpoints List**: Un elenco curato di potenziali endpoint API per scopi di testing ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## Riferimenti - [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) {{#include ../../banners/hacktricks-training.md}}