
Herramienta para CVE-2018-16323
CVE-2018-16323 es una fuga de memoria en el procesamiento de imágenes XBM. Después de que una imagen XBM se convierte a otro tipo de imagen, se pueden extraer los bytes de memoria filtrados de los datos de la imagen.
Descubierto por d4d.
Una herramienta bastante sencilla para generar el PoC de CVE-2018-16323. El directorio samples contiene algunos PoCs pregenerados fáciles de usar.
Para usar esta herramienta debes instalar imagemagick:
apt-get -y install imagemagick
Y compruébalo:
convert -v
Cualquier versión es válida.
Usage poc generator: ./XBadManners.sh gen WIDTHxHEIGHT NAME.xbm [minimal]
Example gen: ./XBadManners.sh gen 512x512 poc.xbm
Example gen: ./XBadManners.sh gen 1024x1024 poc_minimal.xbm minimal
Usage result recovery: ./XBadManners.sh recover SAVED_PREVIEW.png|jpeg|gif|etc
Example recovery: ./XBadManners.sh recover avatar.png
El modo minimal te permite generar el cuerpo XBM más pequeño posible para pegarlo en BurpSuite o donde quieras. El modo minimal fue probado y funciona perfectamente. Puedes establecer cualquier ancho y alto en este modo.
Ten en cuenta que puedes extraer mucha memoria con una sola imagen. La única restricción es la limitación del tamaño máximo de la imagen generada por el backend.
Puedes intentar recuperar preview.png. Si obtienes palabras legibles en la salida, significa que todo funciona correctamente.
./XBadManners.sh gen 512x512 poc.xbm./XBadManners.sh recover result.pngBuena señal si la vista previa cambia significativamente de una subida a otra.
El modo de recuperación está creado para una comprobación rápida y debería funcionar bien con cualquier formato de imagen compatible con ImageMagick, pero solo se probó con png, jpeg y gif. Puedes ajustar la lógica de extracción de memoria de la imagen modificando el script (es simple pero feo)

XBM es un formato en blanco y negro. Por lo tanto, cualquier resultado se verá como una especie de cebra (si tienes buena imaginación). Básicamente, más negro == más datos extraídos.
Toda compilación de ImageMagick posterior a ese commit y anterior a ese commit es vulnerable.