Diventa Autore per CoreTech | Scopri di più
31/03/20 CoreTech Blog
Trovare e provare le vulnerabilità della sicurezza delle applicazioni richiede molta competenza. Tuttavia, molti di loro sono facili da sfruttare. Se vuoi scrivere un codice migliore, dovresti sapere come gli altri potrebbero depredare i tuoi errori. Abbiamo compilato un elenco dei 10 principali applicazioni Web che sono state rese intenzionalmente vulnerabili allo scripting cross-site (XSS). Sono stati creati in modo da poter imparare in pratica in che modo gli aggressori sfruttano le vulnerabilità di scripting tra siti testando il proprio codice dannoso.
I siti in questo elenco dei primi 10 sono sfide pratiche di hacking o raccolte di tali sfide. Alcuni di questi sono semplici e ti aiutano ad apprendere le basi dello scripting cross-site. Altri presentano sfide più difficili ai problemi di sicurezza per ingegneri esperti. Puoi utilizzare questo elenco per esercitarti e testare le tue abilità, ma puoi anche usarlo per educare gli altri su quanto sia importante proteggere efficacemente il codice.
Nota:< Se si utilizza Chrome (o un altro browser web basato su Chromium) per praticare gli attacchi XSS, potrebbe essere necessario disattivare il revisore XSS (renderà impossibile alcune delle sfide). A tale scopo, avviare Chrome con il seguente flag: --disable-xss-auditor.
Nel 2014, Google ha creato un gioco che mostra quanto sia facile sfruttare le vulnerabilità XSS. È stato lanciato per diffondere la consapevolezza della sicurezza e per promuovere il programma di ricompensa dei bug. Il gioco ha 6 livelli di difficoltà crescente. Il gioco Google XSS è semplice. Tutto ciò che richiede è una conoscenza di base di JavaScript e un po 'di consapevolezza di Python. L'autore di questo articolo che non è un ingegnere della sicurezza è arrivato al livello 6 senza cercare su Google soluzioni. Ciò significa che sicuramente puoi farlo anche tu.
Questa serie di sfide è stata creata da Erling Ellingsen nel 2013. Simile al gioco XSS di Google, è una serie di 8 livelli sempre più difficili che esplorano diversi aspetti dello scripting cross-site. In generale, le sfide sono più difficili e richiedono un po 'più di esperienza di programmazione. Il più grande aspetto di questo gioco è il fatto che puoi vedere immediatamente i risultati del codice inserito e l'output della console. Ha anche un aspetto competitivo. Quando risolvi un livello, puoi vedere un elenco di altri vincitori e i loro punteggi. Il punteggio si basa sulla durata del payload. Meno caratteri nel tuo XSS, migliore è la tua posizione.
Il ricercatore di sicurezza da Hong Kong noto come filedescriptor
creato questo sito nel 2014, ispirato da avviso (1) per vincere. Contiene 20 sfide (4 delle quali nascoste) ed è più difficile dei due giochi sopra descritti. Simile a avviso (1) per vincere, questo gioco mostra anche i risultati delle azioni durante la digitazione: il codice HTML e l'output visivo. Tuttavia, non mostra la console, quindi è necessario monitorare gli errori da soli. Si noti che gli ultimi livelli di questa sfida possono rivelarsi impossibili da superare oggi a causa di cambiamenti nei motori del browser.
L'insieme delle sfide XSS di Yamagata è uno dei più antichi giochi XSS. Risale al 2008 e contiene 19 fasi a partire dall'esercizio XSS di base. A differenza delle sfide di cui sopra, questa non fornisce risultati dal vivo, nessun output HTML dal vivo e nessun codice sorgente sul lato server, quindi è necessario fare tutto il lavoro da solo. La pagina è costruita proprio come una vera pagina Web che è vulnerabile a XSS. Ciò significa anche che è necessario assicurarsi che la protezione XSS nel browser sia disattivata. Inoltre, tieni presente che alcune fasi (ad esempio 17 e 18) non sono più applicabili e non puoi completarle perché richiedono una versione precedente di Internet Explorer per funzionare.
Questa serie di sfide è stata creata da Alexander Korznikov ( nopernik ) nel 2016, quindi è relativamente giovane. Simile al gioco di yamagata, al momento ha 19 sfide, ma ne vengono aggiunte di nuove con il tempo, quindi si spera di aspettarsene altre in futuro. Simile al gioco di yamagata, questa è anche solo una semplice pagina HTML con codice JavaScript di base e nessun extra Aiuto. In questo caso, è anche molto importante disattivare i filtri XSS sul lato client. I livelli più alti non sono nascosti, quindi non è necessario progredire per accedervi. Tuttavia, potrebbe rivelarsi più difficile perché non sembrano esserci soluzioni online.
La Polyglot Challenge, progettata dal filedescriptor di Hong Kong (l'autore del prompt (1) per vincere) non è per principianti. Richiede di elaborare un payload che funzioni nella maggior parte dei contesti. Più contesti puoi coprire e più breve è il payload, più alta è la tua classifica. Inizialmente, questa era una sfida black-box: l'autore non ha rivelato i contesti in cui ha testato il payload. Ora, elenca i contesti sulla pagina, quindi la sfida è più semplice. Per essere più efficace, è meglio creare questi contesti su un server Web locale e testare il proprio payload lì prima di inviarlo.
Questo elenco non sarebbe completo se non contenesse la nostra libreria di siti intenzionalmente vulnerabili. Vulnweb non riguarda solo XSS. Contiene diverse applicazioni con diverse tecnologie come PHP e ASP. Molti di questi sono sensibili a qualche forma di XSS ma anche a SQL Injection e molto altro. Il sito è stato originariamente lanciato per aiutarti a testare scanner automatici di vulnerabilità. Pertanto, non è progettato come una serie di sfide. La tua sfida è cercare di trovare tu stesso le vulnerabilità. Successivamente, puoi usare Acunetix per vedere quanti ne hai perso.
Il progetto WebGoat non è un sito online. È un'applicazione open source che devi scaricare ed eseguire da solo. Ti aiuta a imparare attraverso sfide che riguardano non solo XSS (incluso XSS basato su DOM, che è meno comune) ma molti altri tipi di vulnerabilità. WebGoat è attualmente alla versione 8.0 ed è disponibile come download autonomo (un file JAR) o come immagine Docker. Oltre a WebGoat, ci sono molti altri progetti OWASP simili, ad esempio Juice Shop.
Il progetto della comunità Hackme è una libreria di codice di terze parti. Chiunque può caricare esempi di codice su cui gli altri possono esercitarsi. Quando vuoi mettere alla prova le tue abilità, Hackme genera un'istanza per singolo utente con cui puoi lavorare. La libreria Hackme è classificata in base ai tipi di vulnerabilità. Il collegamento fornito sopra porta solo alla parte XSS della libreria. Include molti esempi diversi, sia semplici che complessi. Puoi esercitarti con diversi tipi di XSS tra cui XSS memorizzato, XSS riflesso e XSS basato su DOM.
Se il nostro elenco non è abbastanza per te, puoi sempre seguire il wiki della sfida XSS preparato da cure53 e ospitato su GitHub. Nonostante non sia stato aggiornato per un po', contiene ancora un notevole elenco di diverse sfide del passato. La maggior parte delle sfide descritte in questo wiki sono fornite insieme a soluzioni. Tuttavia, alcuni dei siti Web vulnerabili di terze parti purtroppo non funzionano più.