Summaries
University notes in Markdown format from Obsidian.
Web Security
download Download MDLa sicurezza web si è evoluta parallelamente alla complessità dei browser e delle tecnologie (HTML, JavaScript, DOM, AJAX).
1. Fondamenti: URL e HTTP
- URL: Identifica una risorsa tramite protocollo, credenziali, server (IP/Hostname), porta, path e parametri.
- HTTP: Protocollo stateless (senza memoria).
- GET: Dati nell'URL (impliciti), non dovrebbe avere side-effect.
- POST: Dati nel corpo della richiesta (espliciti), può avere side-effect.
- Status Code: 1xx (info), 2xx (successo), 3xx (reindirizzamento), 4xx (errore client), 5xx (errore server).
- Cookie: Coppie chiave-valore inviate dal server (
Set-cookie) e memorizzate dal client per gestire lo stato della sessione.
2. SQL Injection (SQLi)
Avviene quando l'input dell'utente viene concatenato direttamente in una query SQL.
- Obiettivo: Modificare la logica della query per bypassare l'autenticazione o estrarre dati.
- Union-based SQLi: Sfrutta l'operatore
UNIONper unire i risultati della query originale con quelli di una tabella scelta dall'attaccante.- Tecnica: Usare
ORDER BYper indovinare il numero di colonne.
- Tecnica: Usare
- Blind SQLi: Il risultato non è visibile nella pagina. L'attaccante usa "oracoli" (es. la pagina cambia se la condizione è vera) o il tempo (es.
sleep(10)se la condizione è vera) per indovinare i dati carattere per carattere. - Information Schema: Database meta-dati (in MySQL/PostgreSQL) usato per scoprire i nomi di tabelle e colonne.
Mitigazione SQLi
- Whitelisting: Accettare solo input conformi a una lista fissa.
- Sanitizzazione (Blacklisting/Escaping): Rimuovere caratteri pericolosi (es.
',;). Rischio: Facilmente bypassabile con encoding diversi. - Prepared Statements: La soluzione migliore. Si definisce un template di query e si passano i parametri separatamente, impedendo al database di interpretarli come codice.
- ORM (Object-Relational Mapper): Usare framework (es. CodeIgniter) che astrazgono le query.
3. Session Hijacking e CSRF
Session Hijacking
Furto del cookie di sessione tramite sniffing, attacchi al server o predizione (se l'ID di sessione non è abbastanza casuale).
- Esempio Twitter: Usava un cookie
auth_tokenstatico che rimaneva valido anche dopo il logout. - Difese: Session ID lunghi e casuali, HTTPS, scadenza dei cookie.
Cross-site Request Forgery (CSRF / C-Surf)
L'attaccante induce il browser della vittima (già autenticata su un sito) a inviare una richiesta malevola verso quel sito.
- Mitigazione:
- Referer check: Verificare la provenienza della richiesta (ma può essere rimosso).
- Anti-CSRF Tokens: Inserire un valore segreto e casuale in ogni form/link che il client deve restituire per validare la richiesta.
4. JavaScript e Same Origin Policy (SOP)
La SOP è il pilastro della sicurezza dei browser: uno script può accedere solo a risorse (cookie, DOM) che hanno la stessa origine (schema + hostname + porta).
5. Cross-Site Scripting (XSS)
Attacco per sovvertire la SOP iniettando script malevoli in una pagina web.
- Stored XSS (Persistent): Lo script viene salvato sul server (es. in un profilo utente).
- Caso Samy (MySpace): Uno script si auto-propagava nei profili dei visitatori, rendendo Samy "amico" di un milione di persone in 20 ore.
- Reflected XSS: Lo script è contenuto in un URL e viene "riflettuto" dal server nella pagina di risposta (es. risultati di una ricerca).
Mitigazione XSS
- Filtraggio/Escape: Rimuovere tag
<script>(complesso per via degli encoding e dei tag CSS/XML). - HttpOnly Cookies: Impedisce a JavaScript di leggere i cookie di sessione.
- Content Security Policy (CSP): Il server comunica al browser quali origini sono autorizzate per caricare script e risorse.
6. DNS Rebinding
Attacco avanzato per aggirare la SOP.
- L'attaccante attira la vittima su un sito controllato.
- Il server DNS dell'attaccante risponde con un TTL brevissimo.
- Dopo che il browser ha caricato la pagina, il DNS cambia l'IP del dominio puntandolo all'IP di una macchina interna alla rete della vittima (es. un router).
- Lo script malevolo ora può inviare richieste alla macchina interna perché l'origine (il nome dominio) sembra la stessa.
7. File Disclosure e SSRF
- File Disclosure: Accesso a file sensibili (configurazioni, credenziali, codice sorgente) tramite vulnerabilità come il Path Traversal (
../../etc/passwd). - Server-Side Request Forgery (SSRF): L'attaccante forza il server a effettuare richieste verso altre macchine (spesso interne o metadati cloud come l'IP
169.254.169.254di AWS).- Mitigazione: Whitelist di host autorizzati, isolamento della rete interna.