English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Cos'è un attacco di iniezione JavaScript?
1、L'iniezione JavaScript è l'inserimento di un pezzo di codice js nella barra degli indirizzi del browser per modificare le variabili js della pagina,o il contenuto degli elementi della pagina.
Grazie all'iniezione Javascript, l'utente non deve chiudere o salvare la pagina web per cambiare il suo contenuto,questo viene fatto nella barra degli indirizzi del browser. La sintassi del comando è la seguente:
javascript:alert(#command#)
Ad esempio,se vuoi chehttp://www.example.comSe vedi un avviso alert sul sito, dovresti prima inserire l'URL nella barra degli indirizzi e aspettare che la pagina si carichi, poi cancellare l'URL e inserire:
javascript:alert("Hello World")
Come nuova URL. Questo farà apparire una finestra di avviso“Hello World”,con questa tecnica si può cambiare quasi qualsiasi contenuto di una pagina web,ad esempio un'immagine. Supponiamo di avere un'immagine del logo del sito web,troviamo una parte di codice HTML nella pagina sorgente:
<IMG Name="hi" SRC="hello.gif">
L'immagine è chiamata“hi”,il file sorgente è“hello.gif”,vogliamo cambiarla con il file“bye.jpeg”memorizzato sul nostro sito(http://www.mysite.com),quindi l'indirizzo completo dell'immagine èhttp://www.mysite.com/bye.jpeg,inserendo tramite injection Javascript, dobbiamo solo scrivere nella barra degli indirizzi:
javascript:alert(document.hi.src="http://www.mysite.com/bye.jpeg")
Verrai avvisato da un alerta弹出“http://www.mysite.com/bye.jpeg”,poi l'immagine viene cambiata. È importante notare che queste modifiche sono temporanee!Se ricarichi la pagina o riaccedi, le tue modifiche scompariranno perché hai fatto queste modifiche solo sul tuo PC, non sul server web。
Usando lo stesso metodo, possiamo visualizzare o modificare i valori delle variabili, ad esempio, troviamo un pezzo di codice del genere sul sito web:
<SCRIPT LANGUAGE="JavaScript"> var a="test" </SCRIPT>
Questo significa che il valore della variabile a è "test", ora inseriamo:
javascript:alert(a)
Poi cambiamo il suo valore in "hello":
javascript:alert(a="hello")
L'iniezione di JavaScript viene spesso utilizzata per modificare gli attributi del modulo, supponiamo di avere un pezzo di codice del genere:
<form name="format" action="send.php" method="post"> <input type="hidden" name="mail" value="[email protected]"> <input type="text" name="name"> <input type="submit" value="submit"></form>
Vogliamo che il modulo venga inviato alla nostra email, non a [email protected]. Possiamo utilizzare il seguente comando:
javascript:alert(document.format.mail.value="[email protected]")
Forse hai notato la gerarchia di questi comandi:
Spieghiamo in ordine da sinistra a destra:
2) Il più a sinistra è document
3) Poi è il nome dell'oggetto che vogliamo modificare (ad esempio, document.hi.src) o l'oggetto contenente (ad esempio, document.format.mail.value)
4) Infine, è l'attributo che vogliamo modificare (ad esempio, il percorso di origine: document.hi.src, o il valore della variabile: document.format.mail.value)
5) Usiamo il punto "." per separare
6) Quando vogliamo modificare il valore dell'attributo, usiamo il segno di uguaglianza "=" e il nuovo valore dell'attributo
*Nota: quando il nuovo valore dell'attributo è una stringa (ad esempio: document.format.mail.value="[email protected]"), è necessario racchiuderlo tra virgolette doppi.
Se vogliamo usarlo come valore di una variabile, non è necessario utilizzare virgolette doppi "". Ad esempio, se vogliamo assegnare il valore della variabile b alla variabile a, possiamo inserire javascript:alert(a=b).
Ma, la maggior parte dei tag nella pagina non ha un nome, ad esempio:
<form action="send.php" method="post"> <input type="hidden" name="mail" value="[email protected]"> <input type="text" name="name"> <input type="submit" value="submit"></form>
In questo pezzo di codice non c'è un nome di modulo, basandosi sulle informazioni precedenti, è possibile utilizzare questo comando:
javascript:alert(document. .mail.value="[email protected]")
In questo caso dobbiamo contare e trovare il numero di modulo, ecco un esempio:
<form action="send.php" method="post"> <input type="text" name="name"> <input type="submit" value="submit"> </form> <form action="send.php" method="post"> <input type="hidden" name="mail" value="[email protected]"> <input type="text" name="name"> <input type="submit" value="submit"> </form> <form action="send.php" method="post"> <input type="text" name="name"> <input type="submit" value="submit"> </form>
Nella codifica sopra vediamo 3 moduli, ma ci interessa solo il secondo, quindi il numero di modulo che vogliamo è 2. Non dimenticare che contiamo da 1, ad esempio 1, 2, 3, 4... mentre JavaScript parte da 0, ad esempio 0, 1, 2, 3... quindi il numero reale del modulo è 1, non 2. Di solito dobbiamo sottrarre 1 al numero del modulo trovato. Useremo questo numero per completare il nostro comando:
javascript:alert(document.forms[1].mail.value="[email protected]")
Così puoi modificare immagini o link senza nome, puoi sostituire "forms" con qualsiasi tipo di etichetta che desideri. Per le immagini è così
javascript:alert(document.images[3].src="#l'URL dell'immagine che desideri#")
Per i link è così
javascript:alert(document.links[0].href="#l'URL che desideri#")
Infine, possiamo utilizzare questa tecnica per modificare i cookies. I comandi seguenti sono stati scritti da Dr_aMado di triviasecurity.net, ho solo fatto piccole modifiche per farli apparire prima che l'utente li modifichi. Basta copiarli nella barra degli indirizzi:
javascript:alert(window.c = function a(n, v, nv) { c = document.cookie; c = c.substring(c.indexOf(n) + n.length, c.length); } c = c.substring(1, ((c.indexOf(';') > -1) ? c.indexOf(';') : c.length)); nc = unescape(c).replace(v, nv); document.cookie=n+"="+escape(nc);return unescape(document.cookie);}); alert('Il cookie è: "'+document.cookie+'"');alert(c(prompt("Il nome del cookie:",""), prompt("Cambia questo valore:",""),prompt("con questo:","")))
//Se vuoi modificare manualmente il tuo cookie, puoi utilizzare il seguente comando:
javascript:alert(document.cookie)
Questo mostrerà il tuo cookie attuale, supponiamo che sia "userid=1", se vuoi cambiarlo in "userid=2", puoi utilizzare il comando seguente:
javascript:alert(document.cookie="userid=2")
Devo sottolineare che tutte le modifiche sono solo sul lato client! È come salvare una pagina web sul tuo PC e modificarla. Tuttavia, utilizzando questa tecnica, puoi ancora ingannare la pagina (ad esempio, i cookie) o aggirare le verifiche di sicurezza. Ad esempio, alcune pagine rilevano la posizione da cui i dati vengono inviati, se si inviano dati da http://www.test.com/form.php a http://www.test.com/check.php, check.php potrebbe verificare se i dati provengono dal modulo su http: //www.test.com/form.php. Oltre a ciò, se pianifichi di inserire il tuo codice JavaScript nella pagina, utilizzando alcuni di questi trucchi, sarai in grado di modificare le immagini mantenendole invariabili!
Questo è tutto il contenuto dell'articolo, spero che sia utile per il vostro studio e che voi continuiate a supportare il tutorial URLA.