Come rilevare XSS nelle richieste GET HTTP / 1.1? Una richiesta può essere dannosa e voglio sapere come rilevare se la richiesta GET a un server sta provando a XSS il mio sito web?
Come rilevare XSS nelle richieste GET HTTP / 1.1? Una richiesta può essere dannosa e voglio sapere come rilevare se la richiesta GET a un server sta provando a XSS il mio sito web?
Non dovresti proteggerti da XSS solo scansionando le richieste HTTP di attacchi. Tale scansione non sarà mai completa, e ci saranno sempre alcuni trucchi intelligenti che scivolano attraverso la rete. La prima linea di difesa deve sempre essere quella di disinfettare correttamente i dati non attendibili, in modo da non creare alcuna vulnerabilità XSS.
Per sapere come fare, vedi OWASP cheat sheat sull'argomento. Se possibile, ti consigliamo di impostare rigorosamente l'intestazione Content Security Policy come questo ti darà una solida difesa sui browser moderni. Ha anche una direttiva di segnalazione che istruirà il browser per informarti sui tentativi di attacco.
Detto questo, per la difesa in profondità può essere utile scansionare anche le richieste HTTP per filtrare eventuali attacchi XSS che è possibile rilevare. La maggior parte dei firewall delle applicazioni web , come Naxsi per Nginx, lo farà. Ti consiglio di utilizzare un WAF esistente qui e non provare a eseguire il rollover - non esiste un'espressione regolare che catturi tutti gli attacchi XSS.
Quindi come fa Naxsi a farlo? Secondo themself :
This module, by default, reads a small subset of simple (and readable) rules containing 99% of known patterns involved in websites vulnerabilities. For example,
<
,|
ordrop
are not supposed to be part of a URI.Being very simple, those patterns may match legitimate queries, it is Naxsi's administrator duty to add specific rules that will whitelist those legitimate behaviours.
A proposito, non è solo la richiesta GET a doverti preoccupare, ma anche POST o qualsiasi altro metodo HTTP. I vettori di attacco XSS possono essere ovunque: nell'URL, nei coockies, nei dati POST, nell'intestazione dell'agente utente, ecc. Ecc.
Per essere brevi ti consiglio di scaricare Arachni da qui , avvia arachni_web (WebUI) e apre l'URL che verrà visualizzato in precedenza. Sarai in grado di testare qualsiasi sito web per molti problemi esistenti incluso XSS. Trovo Arachni molto utile.
AGGIORNATO: Se Arachni troverà qualche problema che fornirà istruzioni dettagliate come puoi riprodurre l'attacco XSS sull'esempio di qualche pagina del tuo sito. Verrà visualizzata l'esatta richiesta GET o POST che Arachni invia al server e la risposta. Ad esempio, ho trovato nel modo in cui un URL con il modulo di ricerca (non sul mio sito Web di causa) in cui esiste un campo <input>
. Uno e digita nell'input il testo ; /bin/cat /etc/passwd ;
e il modulo mostrerà il contenuto di /etc/passwd
. Tutti possono riprodurre il problema direttamente nel browser Web senza Arachni. Trovo questo esempio pratico molto meglio di una lunga descrizione teorica comune delle modalità di attacco XSS.
Leggi altre domande sui tag webserver web-application xss