Vulnerabilidad Drupal 7.x SQL Injection a Detalle!

By noviembre 3, 2014Seguridad

Hace días, salio la vulnerabilidad critica de Drupal 7.x en donde un investigador de Seguridad Stefan Horst, encontraba un SQL Injeccion en CORE de Drupal, lo que se le clasifico la vulnerabilidad como CRITICA, pero aun así, muchas sitios web con Drupal , no han actualizado.

Cualquiera puede usar esta vulnerabilidad para ejecutar código PHP en su servidor, eliminar todo, infectar su sitio web con virus, cambiar la contraseña, borrar sus mensajes (nodos) …

Si usted está utilizando CloudFlare, no te preocupes por ser hackeado, pero no obstante actualizar. Su Web Application Firewall (WAF) ha construido en las reglas para protegerse de este ataque.

Un poco de fondo

Drupal es una plataforma de gestión de contenido de código abierto alimentar a millones de sitios web y aplicaciones. Está construido, usado, y con el apoyo de una comunidad activa y diversa de personas en todo el mundo.

Durante una auditoría de código para un cliente, Stefan Horst de “SektionEins GmbH” encontró una vulnerabilidad de inyección SQL en la forma en Drupal 7 núcleo maneja declaraciones preparadas.

Un usuario malintencionado puede inyectar consultas SQL arbitrarias, y en algunos servidores de escribir un archivo PHP ejecutable en cualquier lugar en el servidor.

Arriba está la función que Drupal 7 utilizada para manejar comandos preparados, específicamente para expandir matrices.

En el código anterior, se puede ver la función en acción. Los expandArguments función supone que se llama con una matriz que no tiene llaves.

El primer ejemplo es el código normal, que seleccionará dos usuarios con nombres en NAME_0 y name_1.

El segundo ejemplo muestra la vulnerabilidad. Si expandArguments se llama con una matriz que tiene llaves que no son números enteros, que incorpora la llave en la consulta, tratándolo como un valor.

Exploit:

Guarde la secuencia de comandos en alguna parte , abrelo y actualizar variable $url a la dirección URL del sitio web que desea “hackear” y luego ejecutarlo, ya sea mediante la apertura en su navegador web o mediante la ejecución de php [scripname].php

Si se muestra un error!, que significa que, o bien la página web fue parcheado, la URL que has introducido no es válido o está en formato incorrecto (no se olvide de http: //) o, simplemente, su Internet no está funcionando.

Solucion Simple:

Si usted está funcionando un sitio web en Drupal, y realmente importante tiene miedo de actualizar debido a problemas de compatibilidad, sólo actualize includes/database/database.inc de la siguiente manera:

Vuelva a colocar la línea 739:
foreach ($data as $i => $value) {
con el siguiente codigo:
foreach (array_values($data) as $i => $value) {

Referencias:

https://www.drupal.org/SA-CORE-2014-005

Leave a Reply