Vulnerabilidad 0-day en TimThumb de Wordpress

Timthumb.php es un script sencillo y flexible que permite redimensionar imágenes y que viene con muchos temas de WordPress.

Recientemente se ha descubierto una vulnerabilidad que podría permitir a un atacante subir código PHP al servidor de forma arbitraria.

Cuando TimThumb trata una imagen escribe en un directorio que es accesible vía web. El problema es que la utilidad no comprueba correctamente los dominios desde los que se les permite recibir la imagen:

$allowedSites = array (
'flickr.com',
'picasa.com',
'blogger.com',
'wordpress.com',
'img.youtube.com',
'upload.wikimedia.org',
'photobucket.com',
);


De esta manera, podremos subir nuestro código simplemente especificando alguno de los dominios del array en la URL. Por ejemplo:

http://blogger.com.somebadhackersite.com/shell.php

El servidor de Wordpress cargará entonces el fichero y lo almacenará en el caché (/wp-content/themes/yourtheme/timthumbdir/cache/shell.php), de tal forma que podremos ejecutarlo desde el navegador y, en el caso de subir un shell, acceder a la máquina con los privilegios de la cuenta del servidor web...

Para solucionar esta vulnerabilidad recomendamos usar la versión actualizada del script (1.33), eliminar todos los dominios del array ($allowedSites = array();) si sólo se redimensionan imágenes locales, o borrarlo directamente si no se utiliza.

Tener en cuenta que se trata de un 0-day bastante crítico ya que una búsqueda en Google indica la presencia de miles de estos scripts en la web...

3 comentarios :

  1. pero una shell alojada como .php en otro servidor por ser .php se estaria ejecutando ya.. o no? al tratar de descargarlo al servidor por medio de la vuln de timthumb solo descargara la informacion del servidor donde esta alojada la shell .php no el codigo para poder ejecutarse en el servidor vuln,o no? es meramente informativo el post? o tambien aclarativo? porque me han quedado varias dudas al intentar explotar este bug. dns

    ResponderEliminar
  2. @anonimo php se ejecuta del lado del servidor y, si subes una shell, cualquier comando que lances se ejecutará en el mismo, eso sí con el usuario que esta corriendo el servidor web...

    ResponderEliminar
  3. I truly like to reading your post. Thank you so much for taking the time to share such a nice information. I’ll definitely add this great post in my article section.

    ResponderEliminar