Web API Pentesting

Reading time: 7 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Sommario della metodologia API Pentesting

Pentesting delle API richiede un approccio strutturato per scoprire vulnerabilità. Questa guida racchiude una metodologia completa, con enfasi su tecniche e strumenti pratici.

Understanding API Types

  • SOAP/XML Web Services: Utilizzano il formato WSDL per la documentazione, tipicamente reperibile in percorsi ?wsdl. Strumenti come SOAPUI e WSDLer (Burp Suite Extension) sono fondamentali per il parsing e la generazione di request. Un esempio di documentazione è disponibile su DNE Online.
  • REST APIs (JSON): La documentazione spesso è in file WADL, ma strumenti come Swagger UI offrono un'interfaccia più user-friendly per l'interazione. Postman è utile per creare e gestire request di esempio.
  • GraphQL: Un query language per API che offre una descrizione completa e comprensibile dei dati esposti dall'API.

Practice Labs

  • VAmPI: Un'API volutamente vulnerabile per esercitarsi, coprendo le vulnerabilità OWASP top 10 per API.

Effective Tricks for API Pentesting

  • SOAP/XML Vulnerabilities: Esplora possibili XXE, sebbene le dichiarazioni DTD siano spesso limitate. I tag CDATA possono permettere l'inserimento di payload se l'XML resta valido.
  • Privilege Escalation: Prova endpoint con livelli di privilegio differenti per identificare possibili accessi non autorizzati.
  • CORS Misconfigurations: Analizza le impostazioni CORS per potenziali vie di attacco attraverso CSRF da sessioni autenticate.
  • Endpoint Discovery: Sfrutta pattern delle API per scoprire endpoint nascosti. Tool come i fuzzers possono automatizzare il processo.
  • Parameter Tampering: Sperimenta aggiungendo o sostituendo parametri nelle request per accedere a dati o funzionalità non autorizzate.
  • HTTP Method Testing: Varia i metodi di request (GET, POST, PUT, DELETE, PATCH) per scoprire comportamenti inattesi o leak di informazioni.
  • Content-Type Manipulation: Passa tra diversi content-type (x-www-form-urlencoded, application/xml, application/json) per testare problemi di parsing o vulnerabilità.
  • Advanced Parameter Techniques: Testa tipi di dato inattesi nei payload JSON o gioca con dati XML per iniezioni XXE. Prova anche parameter pollution e caratteri wildcard per test più ampi.
  • Version Testing: Le versioni più vecchie delle API potrebbero essere più vulnerabili. Verifica sempre la presenza di più versioni e testale.

Authorization & Business Logic (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls

Gli stack TypeScript moderni usano spesso tRPC con Zod per la validazione degli input. In tRPC, protectedProcedure in genere assicura che la request abbia una sessione valida (authentication) ma non implica che il chiamante abbia il ruolo/permessi corretti (authorization). Questo mismatch porta a Broken Function Level Authorization/BOLA se procedure sensibili sono protette solo da protectedProcedure.

  • Threat model: Qualsiasi utente autenticato con privilegi ridotti può invocare procedure di livello admin se mancano i controlli di ruolo (es., background migrations, feature flags, tenant-wide maintenance, job control).
  • Black-box signal: endpoint POST /api/trpc/<router>.<procedure> che hanno successo per account base quando dovrebbero essere riservati agli admin. Le self-serve signups aumentano drasticamente l'exploitability.
  • Typical tRPC route shape (v10+): corpo JSON avvolto in {"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
}),

Sfruttamento pratico (black-box)

  1. Registrare un account normale e ottenere una sessione autenticata (cookies/headers).
  2. Enumerare background jobs o altre risorse sensibili tramite le procedure “list”/“all”/“status”.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. Invocare azioni privilegiate come riavviare un job:
bash
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

  • Corruzione dei dati dovuta a riavvii non idempotenti: Forzare esecuzioni concorrenti di migrations/workers può creare race conditions e stati parziali incoerenti (perdita di dati silenziosa, analytics danneggiati).
  • DoS via worker/DB starvation: Il trigger ripetuto di job pesanti può esaurire i pool di worker e le connessioni al database, causando outage a livello di tenant.

Strumenti e risorse per API Pentesting

  • kiterunner: Eccellente per scoprire endpoint API. Usalo per eseguire scan e brute force su percorsi e parametri delle 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: sj è uno strumento da linea di comando progettato per assistere nella verifica di file di definizione Swagger/OpenAPI esposti controllando gli endpoint API associati per autenticazione debole. Fornisce anche template di comandi per test di vulnerabilità manuali.
  • Altri strumenti come automatic-api-attack-tool, Astra, e restler-fuzzer offrono funzionalità mirate per il testing della sicurezza API, che vanno dalla simulazione di attacchi al fuzzing e alla scansione di vulnerabilità.
  • Cherrybomb: È uno strumento di sicurezza API che esegue l'audit della tua API basandosi su un file OAS (lo strumento è scritto in rust).

Risorse di apprendimento e pratica

  • OWASP API Security Top 10: Lettura essenziale per comprendere le vulnerabilità comuni delle API (OWASP Top 10).
  • API Security Checklist: Una checklist completa per mettere in sicurezza le API (GitHub link).
  • Logger++ Filters: Per cercare vulnerabilità API, Logger++ offre filtri utili (GitHub link).
  • API Endpoints List: Una lista curata di potenziali endpoint API per scopi di testing (GitHub gist).

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks