javascript injection tutorial
Cos'è l'iniezione Javascript?
Javascript è una delle tecnologie più diffuse ed è ampiamente utilizzata per pagine web e applicazioni web.
Può essere utilizzato per realizzare diverse funzionalità del sito web. Tuttavia, questa tecnologia può portare alcuni problemi di sicurezza, di cui lo sviluppatore e il tester dovrebbero essere consapevoli.
Javascript può essere utilizzato non solo per buoni scopi ma anche per alcuni attacchi dannosi. Uno di questi è Javascript Injection. L'essenza di JS Injection è iniettare il codice Javascript, che verrà eseguito dal lato client.
In questo tutorial, impareremo di più su come verificare se Javascript Injection è possibile, come può essere eseguito JS Injection e quali sono le conseguenze che JS Injection può portare.
Cosa imparerai:
- Rischi di JavaScript Injection
- Perché è importante testare JS Injection?
- Confronto con altri attacchi
- Controllo dell'iniezione JavaScript
- Modifica dei parametri
- Modifica del design del sito web
- Come eseguire il test contro l'iniezione JavaScript
- Possibile protezione contro questo attacco
- Conclusione
- Lettura consigliata
Rischi di JavaScript Injection
JS Injection offre molte possibilità a un utente malintenzionato di modificare il design del sito Web, ottenere informazioni sul sito Web, modificare le informazioni del sito Web visualizzato e manipolare i parametri (ad esempio, i cookie). Pertanto questo può causare seri danni al sito Web, perdita di informazioni e persino hack.
Lo scopo principale di JS Injection è modificare l'aspetto del sito web e manipolare i parametri. Le conseguenze di JS Injection possono essere molto diverse: dal danneggiamento del design del sito web all'accesso all'account di qualcun altro.
Perché è importante testare JS Injection?
Molti chiederebbero se il test per JS Injection è davvero necessario.
Il controllo delle vulnerabilità di JS Injection è una parte dei test di sicurezza. Il test di sicurezza viene solitamente eseguito solo se incluso nella pianificazione del progetto, poiché richiede tempo, molta attenzione e controllo di più dettagli.
Ho notato che durante la realizzazione del progetto è abbastanza comune saltare i test contro ogni possibile attacco, incluso JS Injection. In questo modo i team cercano di risparmiare tempo per il progetto. Tuttavia, questa pratica molto spesso si conclude con i reclami del cliente.
Dovrebbe essere noto che i test di sicurezza sono altamente raccomandati anche se non sono inclusi nei piani del progetto. Dovrebbe essere eseguito il controllo dei principali attacchi possibili, allo stesso tempo deve verificare la presenza di possibili vulnerabilità JS Injection.
Lasciando semplice Javascript Vulnerabilità di iniezione nel prodotto può costare la qualità del prodotto e la reputazione dell'azienda. Ogni volta che ho imparato a testare contro possibili attacchi e in generale test di sicurezza, non ho mai saltato questa parte del test. In questo modo sono solo più sicuro della qualità del prodotto.
Confronto con altri attacchi
Va detto che JS Injection non è rischioso come SQL Injection , poiché viene eseguito sul lato client e non raggiunge il database del sistema come accade durante l'attacco SQL Injection. Inoltre, non è rischioso come l'attacco XSS.
Durante questo attacco, a volte, è possibile modificare solo l'aspetto del sito Web, mentre lo scopo principale dell'attacco XSS è quello di hackerare i dati di accesso di altri.
Tuttavia, JS Injection può anche causare alcuni gravi danni al sito web. Non solo può distruggere l'aspetto del sito web, ma anche diventare una buona base per hackerare i dati di accesso di altre persone.
Controllo dell'iniezione JavaScript
Quando inizi a testare con JS Injection, la prima cosa che dovresti fare è verificare se JS Injection è possibile o meno. La verifica di questo tipo di possibilità di iniezione è molto semplice: quando navighi sul sito web, devi digitare il codice a barre dell'indirizzo del browser in questo modo:
javascript: alert ('Executed!');
Se viene visualizzata una finestra popup con il messaggio 'Eseguito!', Il sito Web è vulnerabile a JS Injection.
Quindi, nella barra degli indirizzi del sito web, puoi provare vari comandi Javascript.
Va detto che JS Injection non è possibile solo dalla barra degli indirizzi del sito web. Ci sono vari altri elementi del sito web che potrebbero essere vulnerabili a JS Injection. La cosa più importante è conoscere esattamente le parti del sito che possono essere interessate da Javascript Injection e come controllarle.
Gli obiettivi tipici di JS Injection sono:
- Vari forum
- Campi dei commenti dell'articolo
- Guestbook
- Qualsiasi altra forma in cui è possibile inserire del testo.
Per verificare se questo attacco è possibile per il modulo di salvataggio del testo, nonostante fornisca un testo normale, digita il codice Javascript come indicato di seguito e salva il testo nel modulo e aggiorna la pagina.
javascript: alert ('Executed!');
Se nella pagina appena aperta include una casella di testo con il messaggio 'Eseguito!', Allora questo tipo di attacco di iniezione è possibile per il modulo testato.
Se in entrambi i modi viene visualizzata una casella di testo con il messaggio, puoi provare a rompere il sito Web con metodi JS Injection più complicati. Quindi puoi provare diversi tipi di iniezione: modifica dei parametri o modifica del design.
Ovviamente, la modifica dei parametri è considerata più rischiosa rispetto alla modifica del progetto. Pertanto, durante il test dovrebbe essere dedicata maggiore attenzione alla modifica dei parametri.
Inoltre, va tenuto presente che le parti del sito web più vulnerabili per Javascript Injection sono campi di input, in cui viene salvato qualsiasi tipo di dati.
Modifica dei parametri
Come accennato in precedenza, uno dei possibili danni di Javascript Injection è la modifica dei parametri.
Durante questo attacco di iniezione un utente malintenzionato può ottenere informazioni sui parametri o modificare qualsiasi valore dei parametri( Esempio ,impostazioni dei cookie). Ciò può causare rischi piuttosto seri poiché un utente malintenzionato può ottenere contenuti sensibili. Questo tipo di iniezione può essere eseguita utilizzando alcuni comandi Javascript.
Ricordiamo che il comando Javascript che restituisce il cookie della sessione corrente è scritto di conseguenza:
javascript: alert (document.cookie);
Inserito nella barra degli indirizzi del browser, restituirà una finestra popup con i cookie della sessione corrente.
Se il sito Web utilizza i cookie, possiamo leggere informazioni come l'ID della sessione del server o altri dati dell'utente memorizzati nei cookie.
Va detto che invece di alert () può essere utilizzata qualsiasi altra funzione Javascript.
Per esempio ,se abbiamo trovato un sito web vulnerabile, che memorizza l'ID di sessione nel parametro del cookie 'session_id'. Quindi possiamo scrivere una funzione, che cambia l'id della sessione corrente:
javascript: void (document.cookie = 'session_id =<>');
In questo modo il valore dell'ID di sessione verrà modificato. Inoltre, sono possibili anche altri modi per modificare i parametri.
Per esempio, un utente malintenzionato desidera accedere come altre persone. Per eseguire l'accesso, l'utente malintenzionato innanzitutto modificherà le impostazioni del cookie di autorizzazione su true. Se le impostazioni dei cookie non sono impostate come 'true', il valore del cookie può essere restituito come 'undefined'.
come dichiarare una lista collegata in java
Per modificare i valori dei cookie, un utente malintenzionato eseguirà il comando Javascript dalla barra degli URL all'interno del browser:
javascript: void (document.cookie = 'permission = true');
Nel risultato, il parametro dei cookie correnti autorizzazione = false verrà modificato in autorizzazione = vero. In questo modo un utente malintenzionato potrà accedere al contenuto sensibile.
Inoltre, è necessario menzionare che a volte il codice Javascript restituisce informazioni piuttosto sensibili.
javascript: alert (document.cookie);
Per esempio, se lo sviluppatore di un sito web non è stato abbastanza cauto, può restituire anche nomi e valori dei parametri di nome utente e password. Quindi tali informazioni possono essere utilizzate per hackerare il sito web o semplicemente modificare il valore del parametro sensibile.
Per esempio, con il codice sottostante possiamo cambiare il valore del nome utente:
javascript: void (document.cookie = 'username = otherUser');
In questo modo è possibile modificare anche qualsiasi altro valore di parametro.
Modifica del design del sito web
Javascript può essere utilizzato anche per modificare il modulo di qualsiasi sito web e in generale il design del sito web.
Per esempio, con Javascript è possibile modificare qualsiasi informazione visualizzata sul sito:
- Testo visualizzato.
- Sfondo del sito web.
- Aspetto del modulo del sito web.
- Aspetto della finestra popup.
- L'aspetto di qualsiasi altro elemento del sito web.
Per esempio, per modificare l'indirizzo e-mail visualizzato sul sito Web, è necessario utilizzare il comando Javascript appropriato:
javascript: void (document.forms (0) .email.value = 'Test@test.com') ;
Sono possibili anche poche altre manipolazioni complicate con il design del sito web. Con questo attacco possiamo accedere e cambiare anche la classe CSS del sito web.
Per esempio, se desideriamo cambiare l'immagine di sfondo del sito web con JS Injection, il comando dovrebbe essere eseguito di conseguenza:
javascript: void (document. immagine di sfondo: url ('altra-immagine.jpg');
Inoltre, un utente malintenzionato può scrivere il codice Javascript Injection menzionato di seguito nel modulo di inserimento del testo e salvarlo.
javascript: void (alert ('Hello!'));
Quindi ogni volta che viene aperta una pagina, apparirà una casella di testo con il messaggio 'Hello!'.
Il design del sito web modificato con Javascript Injection è meno rischioso della modifica dei parametri. Tuttavia, se il design del sito web viene modificato in modo dannoso, può costare la reputazione dell'azienda.
Come eseguire il test contro l'iniezione JavaScript
Può essere testato nei seguenti modi:
- Manualmente
- Con strumenti di test
- Con i plugin del browser
Possibili vulnerabilità Javascript possono essere controllate manualmente se si ha una buona conoscenza di come dovrebbe essere eseguita. Inoltre, può essere testato con vari strumenti di automazione.
Per esempio, se hai automatizzato i tuoi test a livello API con lo strumento SOAP UI, allora è anche possibile eseguire test di Javascript Injection con SOAP UI .
Tuttavia, posso solo commentare dalla mia esperienza, che dovresti avere davvero una buona conoscenza dello strumento SOAP UI per testarlo per JS Injection, poiché tutti i passaggi del test dovrebbero essere scritti senza errori. Se una qualsiasi fase del test è scritta in modo errato, può anche causare risultati errati del test di sicurezza.
Inoltre, puoi trovare vari plug-in del browser per verificare eventuali attacchi. Tuttavia, si consiglia di non dimenticare di controllare manualmente questo attacco, poiché di solito restituisce risultati più accurati.
Vorrei dire che il test manuale contro Javascript Injection mi fa sentire più sicuro e sicuro della sicurezza del sito web. In questo modo puoi essere sicuro che nessun modulo è stato perso durante il test e che tutti i risultati sono visibili.
Per eseguire il test contro Javascript Injection, è necessario avere una conoscenza generale di Javascript e sapere quali parti del sito sono più vulnerabili. Inoltre, dovresti ricordare che il sito web potrebbe essere protetto contro JS Injection e durante il test dovresti provare a violare questa protezione.
In questo modo sarai sicuro se la protezione contro questo attacco è abbastanza forte o meno.
Possibile protezione contro questo attacco
In primo luogo, per prevenire questo attacco, ogni input ricevuto dovrebbe essere convalidato. L'input dovrebbe essere convalidato ogni volta e non solo quando i dati vengono inizialmente accettati.
Si consiglia vivamente di non fare affidamento sulla convalida lato client. Inoltre, si consiglia di eseguire una logica importante sul lato server.
Molti cercano di proteggersi dall'iniezione di Javascript cambiando le virgolette in doppie e il codice Javascript non dovrebbe essere eseguito in questo modo.
Per esempio, se nel campo del commento scrivi qualcosa con virgolette ..., quelle virgolette verranno sostituite con doppie -<>...<>. In questo modo il codice Javascript inserito non verrà eseguito.
Ho notato che sostituire le virgolette con le virgolette doppie è una pratica abbastanza comune per evitare possibili attacchi di JS Injection. Tuttavia, ci sono alcuni modi per codificare le virgolette per eseguire il codice JS Injection. Pertanto, cambiare le virgolette per raddoppiare non è un modo perfetto per proteggersi da questo attacco.
Conclusione
Va sempre tenuto presente che Javascript Injection è uno dei possibili attacchi contro i siti web, in quanto Javascript è una delle tecnologie più utilizzate per i siti web. Pertanto, durante il test di siti Web o altre tecnologie Web, non bisogna dimenticare di eseguire il test contro questo attacco.
Quando si eseguono i test di sicurezza, JS Injection non deve essere dimenticato. Alcune persone considerano questo test un attacco meno rischioso in quanto viene eseguito sul lato client.
Tuttavia, è l'approccio sbagliato e dovremmo sempre ricordare che Javascript Injection può causare gravi danni al sito web come la perdita di informazioni sensibili, la modifica dei parametri o l'hacking degli account utente.
Pertanto dovremmo considerare questo come una parte importante del test ed è una parte dell'investimento per il buon prodotto e la reputazione dell'azienda.
Il test per JS Injection non è molto difficile. Innanzitutto dovresti avere una conoscenza generale di Javascript e sapere come verificare se questo attacco è possibile per la soluzione web corrente o meno.
Inoltre, durante il test dovresti ricordare che un sito web può avere protezione contro questo tipo di attacco, ma potrebbe essere troppo debole - dovrebbe anche essere controllato. Un'altra cosa importante da ricordare è che ci sono diversi tipi di attacchi Javascript Injection e nessuno di loro dovrebbe essere dimenticato per il test.
Hai eseguito il test di iniezione Javascript? Saremmo lieti di sentirti, sentiti libero di condividere le tue esperienze nella sezione commenti qui sotto.
Lettura consigliata
- Tutorial approfonditi su Eclipse per principianti
- Come configurare il framework di test Node.js: Tutorial Node.js
- Tutorial sull'iniezione di HTML: tipi e prevenzione con esempi
- Tutorial sul test di SQL Injection (esempio e prevenzione di attacchi di SQL injection)
- Tutorial Java Reflection con esempi
- Tutorial SVN: gestione del codice sorgente mediante Subversion
- Tutorial Python DateTime con esempi
- Tutorial SVN tartaruga: revisioni nel repository di codice