vBulletin es una aplicación de pago para crear y administrar foros en internet desarrollado en PHP y MySQL que ofrece soporte para múltiples plataformas (incluso para Android) pudiendo también personalizarse en su totalidad. vBulletin, a diferencia de otros sistemas de foros tales como phpBB, IPB o SMF, ofrece una gestión sencilla, permitiendo fácilmente su uso a cualquier tipo de usuario, además, cuenta con gran cantidad de herramientas y plug-ins para añadir alguna funcionalidad.
La última versión estable publicada es la 4.1.3 de abril de 2011 que corrige una reciente vulnerabilidad de SQL Injection y otra de CSRF/XSRF descubierta en todas las versiones 4.x hasta la 4.1.2 inclusive y que también afecta a la aplicación "vBulletin Publishing Suite". Aún no existe código CVE asociado pero los advisories correspondientes son:
http://www.1337day.com/exploits/16160 --> SQL Injection via Cross-Site Request Scripting
http://www.1337day.com/exploits/16147 --> 4.1.2 (search.php) SQL Injection Vulnerability
http://secunia.com/advisories/44084/
Para identificar de forma inequívoca la versión de vBulletin instalada en un determinado foro, es suficiente realizar una petición web como la siguiente:
http://www.site.com/forum/clientscript/vbulletin_menu.jsPor ejemplo, con el propio foro oficial de vBulletin se obtiene que la versión instalada es la 4.1.4 Beta 1, que aún ni siquiera está disponible para descarga:
http://www.vbulletin.com/forum/clientscript/vbulletin_menu.js

Fig 1. Resultado de lanzar la petición contra el foro oficial de vBulletin para saber la versión
Buscando por internet directamente desde Google, se consiguen multitud de sitios web con versiones diferentes de vBulletin: inurl:"vbulletin_menu.js"
Para encontrar algún foro versión 4.x vulnerable al ataque de SQLi antes comentado, es necesario poner en Google: inurl:"search.php?search_type=1"
Mediante un foro instalado y configurado de forma estándar, con una versión de vBulletin 4.1.2, se analiza la vulnerabilidad y el impacto que puede tener un ataque de este tipo por parte de cualquier usuario malintencionado. Ha sido posible obtener todo tipo de información relativa a los usuarios del foro, versión del motor de base de datos MySQL, nombre de la base de datos, ejecutar comandos en el servidor, etc.
El procedimiento para detectar y analizar la vulnerabilidad ha sido el siguiente:
1. Se encuentra un foro con vBulletin instalado. Búsqueda en Google de
inurl:"search.php?search_type=1" que en este caso no ha sido necesaria al tratarse de un foro de hacktimes configurado para este análisis de la vulnerabilidad (http://forums.hacktimes.com)
2. Se comprueba la versión del foro para detectar que sea vulnerable tal y como se ha visto anteriormente:
http://forums.hacktimes.com/clientscript/vbulletin_menu.js
Versión 4.1.2 vulnerable3. Se localiza el fichero search.php donde reside la vulnerabilidad, opción "groups" dentro de "Search Multiple Content Types" y se comprueban, por ejemplo, los patrones de ataque comentados en el advisory. Es necesario registrarse en el foro y localizar, previamente, un grupo existente para lanzar la búsqueda e inyectar los parámetros de SQL Injection mediante POST. Utilizando la extensión de Firefox Tamper data para modificar las cabeceras HTTP/HTTPS y los parámetros que se le pasan a la aplicación, es muy sencillo inyectar el código SQL para explotar la vulnerabilidad como, por ejemplo:

Fig 2. Captura de Tamper data con los parámetros del search.php donde poder añadir el código SQL
Para obtener el nombre de la base de datos actual (hacktimes_fb): &cat[0]=1) UNION SELECT database()#
En este caso, se ha encontrado el grupo llamado “The Group” (página del foro groups.php) y se inyecta el código SQL al final de todos los parámetros.

Fig 3. Inyección SQL para sacar el nombre de la base de datos del foro
Para conseguir la versión de MySQL instalada (MySQL v5.1.48-log): &cat[0]=1) UNION SELECT @@version#

Fig 4. Inyección SQL para sacar la versión del motor de base de datos MySQL existente
Para ver los datos del primer usuario de la base de datos antes encontrada (hacktimes_fb) relativos a su nombre de usuario, dirección de correo electrónico y contraseña: &cat[0]=1) UNION SELECT concat(username,0x3a,email,0x3a,password,0x3a,salt) FROM user WHERE userid=1#

Fig 5. Inyección SQL para sacar los datos del primer usuario de la BBDD
4. A partir de aquí, simplemente se trata de explotar la vulnerabilidad de SQL Injection en el motor de base de datos MySQL de vBulletin.
Para corregir la vulnerabilidad basta actualizar a la versión 4.1.3 o aplicar el parche publicado por vBulletin. Más información en la página del fabricante y en SecurityFocus:
http://www.vbulletin.com/forum/showthread.php/376995-vBulletin-4.X-Security-Patch
http://www.securityfocus.com/bid/47281/info
Según Secunia (http://secunia.com/advisories/product/28467/?task=advisories) existen, desde el año 2003, 7 fallos reportados para el software de foros vBulletin, todos ellos explotables de forma remota y uno de los cuales está aún sin corregir (vBulletin BB Code Script Insertion Vulnerability):


Comentarios
Añadir comentario