viernes, 27 de enero de 2012

wordpress vulnerable










la compañía Trustwave, ha publicado una nota de seguridad (o advisory) en la que presenta graves vulnerabilidades que afectan al gestor de contenidos Wordpress, para versiones 3.3.1 y anteriores.

Entre las vulnerabilidades tenemos Cross-Site Scriptings persistentes, Cross-Site Scriptings no persistentes ejecución de código PHP,
fuga de información sensible de la configuración de la base de datos MySQL, ya que se permiten hacer consultas para averiguar el usuario y la contraseña sin tener límite de
intentos. Todo esto es posible gracias al fichero de configuración de la instalación setup-config.php, que permite la instalación de Wordpress en bases de datos MySQL tanto locales como remotas. Si bien este script no puede ejecutarse si no se posee un usuario y contraseña válidos para el servidor MySQL

.que pasaría si configuráramos el Wordpress para que utilizase una base de datos propia, en vez de la original del servidor? Pues que a partir de ahí, "estamos vendidos".

Todo esto se ve claramente en el proceso descrito en el advisory, en el cual se presentan pruebas de concepto para las peticiones necesarias, y como aprovecharse de las vulnerabilidades encontradas para engañar a la instalación para que use nuestra base de datos,

en vez de la original. Una vez el gestor de contenidos tiene configurada la base de datos para que conecte con una que hayamos alojado en un sitio accesible, podríamos inyectar código PHP mediante el editor de Temas incluído en Wordpress, o incluir código Javascript en el contenido o páginas del sitio, consiguiendo un Cross-Site Scripting persistente.

En la prueba de concepto, se detallan los siguientes pasos necesarios para el compromiso de un sistema Wordpress:

1) Configurar una base de datos MySQL en una dirección IP a la que tengamos acceso, y se tenga acceso desde el exterior. A esta base de datos es a la que apuntaremos para que se utilice como principal.

2) Peticiones contra el script vulnerable, "setup-config.php", modificando parámetros y valores de las peticiones POST (hacia setup-config.php) y GET (se llama a install.php para que realice la instalación) necesarias que configuren el Wordpress para conectar con nuestra base de datos.

3) Una vez se ha instalado el sistema Wordpress, se pueden realizar los dos tipos de ataques:
3.a) Ejecución de código PHP: Tras completar la instalación, se accede al editor de temas del sitio, y se modifica cualquiera de las plantillas para incluir código PHP, que se ejecutará al acceder a cualquier página construída con dichas plantillas (por ejemplo, y como se muestra en la prueba de concepto, la correspondiente con el aviso de página no encontrada, el 404.php)

3.b) Cross-Site Scripting persistente: Petición en la base de datos (que recordemos, tenemos el control por ser directamente nuestra) para actualizar contenido del blog e incluir una cadena de texto JavaScript.

Tenéis más información sobre estas acciones, además de los Cross-Site Scriptings no persistentes y la posible fuga de información de usuario y contraseña de MySQL realizando fuerza bruta, en la nota de seguridad TWSL2012-002 de Trustware

Y para acabar, vamos con la respuesta por parte del equipo de Wordpress, cuando se les notificó estos problemas:  
"Damos prioridad a tener una mejor experiencia del usuario en el proceso de instalación. No es muy corriente que un usuario se encuentra con el problema de instalar una copia de Wordpress y no finalizar el proceso de configuración de la instalación de forma inmediata. Las posibilidades de explotar dicha vulnerabilidad son muy pequeñas."

No hay comentarios: