XSS in un file jpeg

2

Ho visto oggi questo rapporto: link . Lì, l'hacker ha caricato un file con JavaScript al suo interno, che poteva attivare con successo quel codice. Ma non capisco due cose e forse puoi aiutarmi a chiarire questo.

Prima di tutto, dove l'hacker inserisce il codice JavaScript. Quando utilizzo lo strumento dhex , ottengo questo risultato e posso vedere anche il codice JavaScript

Il file è anche un file jpeg valido, quindi posso aprirlo e guardarlo. Quando osservo i metatag con exiftool , non vedo alcun codice JavaScript:

ExifTool Version Number         : 10.23
File Name                       : xss.jpg
Directory                       : .
File Size                       : 57 kB
File Modification Date/Time     : 2017:07:06 19:02:47+02:00
File Access Date/Time           : 2017:07:06 19:06:44+02:00
File Inode Change Date/Time     : 2017:07:06 19:02:47+02:00
File Permissions                : rwxrwxrwx
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : inches
X Resolution                    : 72
Y Resolution                    : 72
Profile CMM Type                : lcms
Profile Version                 : 2.1.0
Profile Class                   : Display Device Profile
Color Space Data                : RGB
Profile Connection Space        : XYZ
Profile Date Time               : 2012:01:25 03:41:57
Profile File Signature          : acsp
Primary Platform                : Apple Computer Inc.
CMM Flags                       : Not Embedded, Independent
Device Manufacturer             : 
Device Model                    : 
Device Attributes               : Reflective, Glossy, Positive, Color
Rendering Intent                : Perceptual
Connection Space Illuminant     : 0.9642 1 0.82491
Profile Creator                 : lcms
Profile ID                      : 0
Profile Description             : c2
Profile Copyright               : IX
Media White Point               : 0.9642 1 0.82491
Media Black Point               : 0.01205 0.0125 0.01031
Red Matrix Column               : 0.43607 0.22249 0.01392
Green Matrix Column             : 0.38515 0.71687 0.09708
Blue Matrix Column              : 0.14307 0.06061 0.7141
Red Tone Reproduction Curve     : (Binary data 64 bytes, use -b option to extract)
Green Tone Reproduction Curve   : (Binary data 64 bytes, use -b option to extract)
Blue Tone Reproduction Curve    : (Binary data 64 bytes, use -b option to extract)
Image Width                     : 882
Image Height                    : 650
Encoding Process                : Progressive DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 882x650
Megapixels                      : 0.573

La seconda parte che voglio capire è: in quali condizioni può essere attivato il javascript?

    
posta kristian 06.07.2017 - 20:30
fonte

1 risposta

2

First of all, where does the hacker put in the JavaScript Code.

Le probabilità sono che l'autore possa semplicemente posizionare Javascript ovunque nel file, a patto che non sia corrotto in modo che venga respinto dall'applicazione. Questo non deve necessariamente essere un campo meta dati assegnato.

Infatti, lo strumento identify dello strumento ImageMagick rileva che il file non è corretto:

$ identify xss.jpg
xss.jpg JPEG 882x650 882x650+0+0 8-bit sRGB 58189B 0.010u 0:00.009
identify: Corrupt JPEG data: 25 extraneous bytes before marker 0xdb 'xss.jpg' @ warning/jpeg.c/JPEGWarningHandler/351.

Questi "byte estranei" sono esattamente il payload di Javascript.

The second part I want to understand is: Under which condition the javascript can be triggered?

Il Javascript viene attivato se l'immagine viene pubblicata come text/html anziché image/jpeg .

La vulnerabilità scoperta dall'autore è che l'applicazione deriva il tipo di contenuto dall'estensione del file anziché dal tipo di supporto desiderato. Pertanto, potrebbero semplicemente modificare un'estensione .jpg in .html e l'applicazione automaticamente server gli stessi dati con Content-type: text/html , indipendentemente dal fatto che sia stato originariamente caricato come file immagine.

Questo è un bug nell'applicazione e non ci si può aspettare che le altre applicazioni si comportino in questo modo. Per ottenere lo stesso effetto, puoi rinominare il file JPG PoC in xss.html e aprirlo nel browser.

    
risposta data 06.07.2017 - 20:43
fonte

Leggi altre domande sui tag