nascondendo javascript nell'immagine

5

Ho letto un post in thehackernews e ho cercato la rete per trovare come ha funzionato.

Come chiunque può aggiungere javascript in un'immagine in modo tale che quando viene visualizzata l'immagine possa eseguire uno script.

Questo può essere fatto con altre lingue?

    
posta user38257 04.04.2014 - 18:33
fonte

3 risposte

4

Nell'articolo a cui sei collegato, il codice Javascript non viene incluso all'interno del file immagine stesso, si sta manifestando all'interno della pagina HTML che fa riferimento all'immagine. L'input non attendibile viene restituito all'interno del tag immagine senza una convalida o una sanificazione sufficienti. Questo è scripting cross-site persistente poiché l'input dannoso viene restituito ogni volta che qualcuno visualizza la pagina che include questa immagine (cioè è probabilmente memorizzata nel database come parte del profilo dell'utente).

Convenzionalmente, la marcatura HTML per includere un'immagine del profilo potrebbe essere simile a questa:

<img src="/imagename.jpg">

Tuttavia, deve essere diverso per ogni utente, quindi il codice dell'applicazione che lo genera potrebbe apparire simile a questo (l'esempio è PHP):

<img src="/<?=$imagename?>">

Quindi, se l'utente Alice ha caricato alicespic.jpg , gli utenti vedrebbero quell'immagine quando hanno visitato il suo profilo, ad esempio. Tuttavia, è qui che si può verificare la vulnerabilità, se il nome dell'immagine non è correttamente convalidato o disinfettato.

Ad esempio, se Mallory può impostare il nome dell'immagine del suo profilo su inncoent.jpg" onload="alert(1) , verrà generato il seguente markup HTML:

 <img src="/inncoent.jpg" onload="alert(1)">

L'utilizzo dell'evento onload implica che lo script arbitrario verrà eseguito una volta che l'immagine ha terminato il caricamento. In sostanza, questo codice Javascript verrà eseguito ogni volta che qualcuno visualizza il profilo interessato, ma verrà eseguito all'interno del loro browser.

Ciò non si verificherebbe se lo sviluppatore consentisse l'inclusione di caratteri sicuri all'interno del nome dell'immagine.

    
risposta data 04.04.2014 - 19:20
fonte
2

Ci sono 2 modi per farlo, il primo è semplicemente scrivere uno script in un file di testo e salvarlo come jpg. Ovviamente non è un'immagine, ma funzionerà. Se vuoi un'immagine reale, puoi prendere la tua immagine e usare un hexeditor per aggiungere il tuo script ai metadati dell'immagine. Funziona perché i browser interpretano il codice mentre tentano di visualizzare l'immagine nel codice HTML.

Le immagini utilizzano un'intestazione chiamata EXIF che contiene informazioni sull'immagine come modello di fotocamera, risoluzione, flash, ecc. È possibile inserire uno script in questa intestazione e, se l'applicazione sta visualizzando i metadati dell'immagine, visualizzerà invece lo script. Controlla questo link per maggiori informazioni, sta iniettando codice PHP invece di javascript ma l'idea è la stessa.

    
risposta data 04.04.2014 - 18:59
fonte
1

Modifica: la risposta di itscooper è l'interpretazione corretta della vulnerabilità nell'articolo THN a cui la domanda si riferisce, a mio parere. La risposta sotto è per la domanda generale su come nascondere js e farlo eseguire all'interno di un oggetto immagine.

Storicamente, puoi XSS alcuni browser inserendo URL "javascript:" come sorgenti di immagini, perché eseguono automaticamente lo script ( link ). Sorprendentemente, questo è ancora il caso in Firefox anche se il javascript è in modalità sandbox e non ha accesso agli oggetti della pagina. Tuttavia, può essere utilizzato per caricare i carichi della pagina DOS eseguendo un ciclo non terminato che congela il thread principale. Ho segnalato questo bug a Mozilla ma non è stato ancora risolto: link .

    
risposta data 05.04.2014 - 23:29
fonte

Leggi altre domande sui tag