Arsenale · Web & API
Tecniche su applicazioni web e API, dalla struttura del Web Application Hacker's Handbook e OWASP. Tutorial: SQLi · XSS · RCE/LFI/Upload · Exploitare i servizi.
Solo su lab (PortSwigger Academy, Juice Shop, DVWA) o programmi bug bounty in scope.
Mapping & recon dell'app
| Tecnica | Come funziona | Tool / comando |
| Spidering/crawling | Mappa automaticamente pagine e parametri | Burp Spider · katana |
| Directory/file brute force | Trova contenuti nascosti con wordlist | gobuster · feroxbuster |
| Recursive fuzzing | Fuzz ricorsivo delle directory | ffuf -recursion |
| Virtual host discovery | Trova vhost sullo stesso IP via Host header | ffuf -H Host |
| Parameter discovery | Scopre parametri nascosti | arjun · param-miner |
| Robots.txt / sitemap mining | Path rivelati dai file di indicizzazione | manuale |
| JS endpoint extraction | API/segreti dentro i file JavaScript | LinkFinder |
| Source map recovery | Ricostruisci il sorgente da .map | unwebpack |
| Wayback URL mining | Endpoint storici ancora attivi | gau · waybackurls |
| Tech fingerprinting | Identifica CMS/framework/server | whatweb · wappalyzer |
| Banner/header analysis | Header rivelano versioni e config | curl -I |
| HTTP method enumeration | Trova PUT/DELETE/TRACE abilitati | nmap http-methods |
| WebDAV abuse | PUT abilitato → carichi shell | davtest · cadaver |
| CMS scanning (WordPress) | Plugin/temi/utenti vulnerabili | wpscan |
| CMS scanning (Joomla/Drupal) | Componenti vulnerabili | joomscan · droopescan |
| Git/backup exposure | .git, .bak, .swp esposti sul web | git-dumper |
| Favicon/tech hashing | Identifica tech dal favicon hash | shodan http.favicon |
| Error page fingerprint | Framework dedotto dalle pagine d'errore | manuale |
Attacchi all'autenticazione
| Tecnica | Come funziona | Tool / comando |
| Credential brute force | Prova molte password su un form di login | hydra http-post-form |
| Password spraying | Una password comune su molti utenti (no lockout) | script/hydra |
| Credential stuffing | Riusa credenziali da data breach | liste combo |
| Username enumeration | Messaggi/tempi diversi rivelano utenti validi | Burp Intruder |
| Default credentials | admin/admin e simili non cambiati | liste default |
| Verbose error abuse | Errori di login troppo dettagliati | manuale |
| Password reset poisoning | Host header manipola il link di reset | Burp |
| Password reset token weak | Token prevedibili/non scadenti | analisi |
| Account takeover via email change | Cambio email senza verifica | manuale |
| "Remember me" abuse | Cookie persistente debole/prevedibile | analisi |
| 2FA bypass (response manip.) | Modifica risposta o salta lo step OTP | Burp |
| OTP brute force | Codici a 4-6 cifre senza rate limit | Intruder |
| 2FA code reuse/leak | Codice riutilizzabile o nella risposta | manuale |
| Auth logic bypass | Accedi a step post-login saltando il primo | forced browsing |
| SQLi login bypass | ' OR 1=1-- nel campo utente | tutorial |
| Response manipulation | Cambi false→true nella risposta | Burp |
| Registration abuse | Registri utenti privilegiati/duplicati | manuale |
| SSO/SAML flaws | Assertion manipolabili, signature wrapping | SAML Raider |
Sessione & token
| Tecnica | Come funziona | Tool / comando |
| Session token prediction | Token con pattern/sequenza indovinabile | Burp Sequencer |
| Session fixation | Imposti tu il session id della vittima | manuale |
| Session hijacking | Rubi il cookie e ti impersoni | XSS/sniffing |
| Cookie senza HttpOnly | JS può leggere il cookie (favorisce XSS→furto) | analisi |
| Cookie senza Secure | Cookie inviato anche su HTTP | analisi |
| Cookie SameSite mancante | Favorisce CSRF cross-site | analisi |
| Weak "logout" | Il token resta valido dopo il logout | manuale |
| JWT: alg=none | Firma rimossa, il server accetta comunque | jwt_tool |
| JWT: HS256/RS256 confusion | Firmi con la chiave pubblica come segreto HMAC | jwt_tool |
| JWT: weak secret | Cracki il segreto HMAC con wordlist | hashcat -m 16500 |
| JWT: kid injection | Manipola il parametro kid (path/SQLi) | jwt_tool |
| JWT: jku/x5u abuse | Punti la chiave a un tuo JWKS | manuale |
| JWT: exp non validato | Token scaduti ancora accettati | manuale |
| OAuth redirect_uri abuse | Redirect a dominio attaccante → furto token | manuale |
| OAuth state mancante | CSRF sul flow OAuth | manuale |
| OAuth implicit token leak | Token nell'URL/referer | manuale |
Controllo accessi (authorization)
| Tecnica | Come funziona | Tool / comando |
| IDOR | Cambi un id (?id=123→124) e accedi a dati altrui | Burp |
| Horizontal privesc | Accedi alle risorse di un altro utente pari livello | manuale |
| Vertical privesc | Accedi a funzioni admin da utente normale | forced browsing |
| Forced browsing | Vai diretto a URL admin non linkati | wordlist |
| Parameter-based access | role=user→role=admin | Burp |
| Mass assignment | Aggiungi campi (isAdmin) al body accettati dal backend | Burp |
| Referer-based control bypass | Il controllo si fida solo del Referer | header spoof |
| Method-based bypass | Cambi GET↔POST per aggirare i controlli | Burp |
| URL case/encoding bypass | /Admin, /admin%2f per aggirare i filtri | manuale |
| Mancata verifica ownership | Modifichi risorse non tue | manuale |
SQL Injection (varianti)
| Tecnica | Come funziona | Tool / comando |
| Error-based SQLi | Estrai dati dai messaggi d'errore del DB | tutorial |
| UNION-based SQLi | Aggiungi righe con dati arbitrari | UNION SELECT |
| Boolean blind SQLi | Vero/falso dalla differenza di risposta | sqlmap |
| Time-based blind SQLi | Ritardo (SLEEP) come canale di dati | sqlmap |
| Out-of-band SQLi | Esfiltra via DNS/HTTP verso il tuo server | OOB |
| Second-order SQLi | Payload salvato ed eseguito dopo, altrove | manuale |
| WAF/filter bypass SQLi | Encoding, commenti, case per aggirare i filtri | sqlmap --tamper |
| Stacked queries | Più statement in una query (;) | manuale |
| SQLi → RCE | xp_cmdshell/INTO OUTFILE per eseguire comandi | manuale |
| SQLi → file read/write | LOAD_FILE / INTO OUTFILE | manuale |
| Header/cookie SQLi | Iniezione fuori dai parametri URL | Burp |
Altre injection
| Tecnica | Come funziona | Tool / comando |
| NoSQL injection | Operatori Mongo ($ne,$gt) bypassano login | manuale |
| OS command injection | Concateni comandi shell nell'input | tutorial |
| Blind command injection | Nessun output → usa sleep/DNS/out-of-band | manuale |
| Argument injection | Inietti flag/argomenti a un binario | manuale |
| LDAP injection | Alteri i filtri LDAP per bypass/enum | manuale |
| XPath injection | Manipoli query XPath su dati XML | manuale |
| XXE (XML External Entity) | Entità esterne leggono file/SSRF | payload XML |
| Blind XXE (OOB) | Esfiltrazione via DTD esterna | OOB |
| SSTI (template injection) | Codice nel template server → RCE | tplmap |
| CSTI (client-side template) | Injection nei template Angular/Vue | manuale |
| CRLF injection | Inietti header/HTTP splitting | manuale |
| Host header injection | Manipoli il routing/reset via Host | Burp |
| Email header injection | Inietti CC/BCC nei form di contatto | manuale |
| SMTP injection | Comandi SMTP nei campi utente | manuale |
| Log injection | Inietti nei log (poi log poisoning→RCE) | manuale |
| Server-side JS injection | eval su input in Node | manuale |
| ORM injection | Bypass filtri via query dell'ORM | manuale |
| GraphQL injection | SQLi/NoSQL via resolver | manuale |
Client-side & XSS
| Tecnica | Come funziona | Tool / comando |
| Reflected XSS | Script nell'URL riflesso nella risposta | tutorial |
| Stored XSS | Script salvato colpisce tutti i visitatori | manuale |
| DOM XSS | JS lato client usa input non sicuro | DevTools |
| Blind XSS | Esegue in un pannello admin, ti notifica | XSSHunter |
| Mutation XSS (mXSS) | Il parser muta l'HTML in payload valido | manuale |
| Filter/WAF bypass XSS | svg/onerror/case-mixing per aggirare i filtri | PayloadsAllTheThings |
| XSS via file upload (SVG/HTML) | File caricato eseguito nel browser | manuale |
| CSRF | Forzi la vittima a inviare una richiesta autenticata | PoC HTML |
| CSRF token bypass | Token mancante/riutilizzabile/prevedibile | Burp |
| Clickjacking | iframe invisibile inganna il click | PoC frame |
| Tabnabbing | target=_blank senza noopener dirotta la tab | manuale |
| CORS misconfig | Origin riflesso permette furto dati cross-site | Burp |
| PostMessage abuse | Handler che si fida di origini arbitrarie | DevTools |
| Prototype pollution | Inquini Object.prototype → gadget RCE/XSS | manuale |
| DOM clobbering | Elementi HTML sovrascrivono variabili JS | manuale |
| Open redirect | Redirect verso dominio attaccante | manuale |
| Reverse tabnabbing | La pagina figlia cambia la parent | manuale |
| Web cache deception | Fai cachare pagine private | manuale |
SSRF, file & deserializzazione
| Tecnica | Come funziona | Tool / comando |
| SSRF | Il server fa richieste a URL che controlli tu | Burp Collaborator |
| SSRF → cloud metadata | Leggi 169.254.169.254 per credenziali cloud | manuale |
| Blind SSRF | Nessuna risposta → out-of-band | Collaborator |
| SSRF filter bypass | Redirect, IP decimali, DNS rebinding | manuale |
| Path traversal | ../../etc/passwd per leggere file | tutorial |
| LFI | Includi file locali arbitrari | manuale |
| LFI → RCE (log poisoning) | Inietti PHP nei log, poi li includi | manuale |
| LFI → RCE (/proc/self/environ) | Includi env con payload nell'UA | manuale |
| RFI | Includi file remoto dal tuo server | manuale |
| PHP wrapper abuse | php://filter, data://, phar:// | manuale |
| File upload → web shell | Carichi ed esegui codice server | manuale |
| Upload filter bypass | Doppia estensione, magic bytes, content-type | Burp |
| ZIP slip | Path traversal in estrazione archivi | manuale |
| Insecure deserialization (PHP) | Oggetti serializzati malevoli → RCE | phpggc |
| Java deserialization | Gadget chain in stream serializzato | ysoserial |
| .NET / Python pickle | Deserializzazione insicura → RCE | ysoserial.net |
| Node deserialization | node-serialize RCE | manuale |
API, GraphQL & HTTP avanzato
| Tecnica | Come funziona | Tool / comando |
| BOLA/BFLA (API IDOR) | Object/function level authorization mancante | Burp |
| Excessive data exposure | L'API restituisce più dati del necessario | analisi |
| Rate limit mancante | Brute/scraping senza limiti | Intruder |
| API key leak | Chiavi nei JS/repository | trufflehog |
| GraphQL introspection | Estrai l'intero schema | graphql-voyager |
| GraphQL batching abuse | Molte query in una → bypass rate limit | manuale |
| GraphQL field suggestion leak | Deduci campi anche con introspection off | clairvoyance |
| REST verb tampering | Metodi non previsti bypassano controlli | Burp |
| HTTP request smuggling | Disallineamento CL/TE tra proxy e server | Burp (Smuggler) |
| Web cache poisoning | Avveleni la cache con header non-chiave | Param Miner |
| Host header attacks | Routing/reset/SSRF via Host | Burp |
| Race condition | Richieste parallele sfruttano finestre temporali | Turbo Intruder |
| Business logic flaw | Abuso di flussi previsti (prezzi, quantità negative) | manuale |
| Parameter pollution (HPP) | Parametri duplicati interpretati diversamente | Burp |
| WebSocket hijacking | CSWSH: connessione WS cross-site | Burp |
| Verbose debug/misconfig | Stack trace, debug mode, endpoint di admin esposti | manuale |
Info disclosure & misconfig
| Tecnica | Come funziona | Tool / comando |
| Directory listing | Elenco file esposto | manuale |
| Backup/temp file | .bak, ~, .old scaricabili | wordlist |
| Config file exposure | .env, web.config, wp-config leggibili | manuale |
| Source code disclosure | Server serve il .php come testo | manuale |
| Stack trace / debug | Errori rivelano path e versioni | manuale |
| Default/admin pages | phpinfo, /server-status, console | manuale |
| Sensitive data in JS | Segreti/endpoint nel client | LinkFinder |
| Verbose headers | X-Powered-By, versioni | curl -I |
| Autenticazione mancante su endpoint | API interne raggiungibili | manuale |
| CORS troppo permissivo | * con credenziali | manuale |
| Security headers assenti | No CSP/HSTS/X-Frame | securityheaders.com |