56 lines
4.9 KiB
Markdown

# 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}}