martes, junio 12, 2012

Vulnerabilidad grave en MySQL/MariaDB - CVE-2012-2122

FUENTE: de Security By Default 

Vulnerabilidad grave en MySQL/MariaDB - CVE-2012-2122:

No es el día de los Santos Inocentes, ni de aquí (28 de Diciembre) ni internacional (April's Fool). El sábado 9 de Junio  Sergei Golubchik, coordinador de seguridad de MariaDB publicaba un post en la lista OSS-SEC sobre una grave vulnerabilidad que afectaba a diferentes versiones de MySQL y MariaDB.

Se evidencia la posibilidad de autenticarse como usuario con máximos privilegios (root) únicamente realizando conexiones simultáneas, con CUALQUIER contraseña introducida como parámetro y contra un servidor vulnerable. Al cabo de un número indeterminado de intentos fallidos, el servidor aceptará la conexión y se realizará la autenticación de forma satisfactoria. Sin más. Sin shellcodes raras, sin casuísticas extrañas: únicamente tenemos que tener delante un servidor vulnerable, que cumpla con las siguientes versiones:


  • Son vulnerables todas las versiones de MariaDB y MySQL hasta la 5.1.61, 5.2.11, 5.3.5 y 5.5.22
  • NO SON vulnerables las versiones de MySQL 5.1.63, 5.5.24 y 5.6.6
  • NO SON vulnerables las versiones de MariaDB 5.1.62, 5.2.12, 5.3.6 y 5.5.23
Con la siguiente línea en shell script, teniendo instalada una base de datos vulnerable en el sistema local, y contando con el cliente 'mysql', se podría realizar una autenticación como usuario root sin conocer la contraseña:

for i in `seq 1 1000`; do mysql -u root --password=blablabla -h 127.0.0.1 2>/dev/null; done

Básicamente, se ejecutará la sentencia de autenticación mediante cliente por consola (comando mysql) como usuario root (-u root) y cualquier contraseña (--password=blablabla) contra el servidor vulnerable  presente en el mismo sistema donde se ejecuta este script (-h 127.0.0.1), sin mostrar ningún mensaje de error por pantalla (2>/dev/null).

Vamos a ver el ejemplo real. Las siguientes pruebas se han realizado sobre una Fedora Core 16, con MySQL versión 5.5.21:


En primer lugar, y para este ejemplo, cambiaremos la contraseña original de MySQL para el usuario root, que antes la teníamos establecida a 'password', para que ahora sea 'SuperPassWordDeLaMuerte':


Seguidamente, salimos de la sesión de root, y nos quedamos como usuario sin privilegios, y ejecutamos la secuencia anterior, que realizará conexiones como usuario root y cualquier contraseña, programando un total de 1000 intentos. A continuación se ejecutará la consola de mysql satisfactoriamente:



Comprobamos el usuario con el que estamos autenticados mediante la sentencia select current_user(), obteniendo como resultado 'root@localhost'


Obviamente, este "ataque" ya se encuentra integrado como exploit de Metasploit Framework, permitiendo además el volcado de hashes de todos los usuarios, todo ello con el módulo mysql_authbypass_hashdump:



Enhorabuena desde SecurityByDefault a los descubridores de este bug, verlo para creerlo...De momento, ¡una de las vulnerabilidades descubiertas favoritas para este año 2012!



miércoles, junio 06, 2012

domingo, junio 03, 2012

iPhone / iPad: ¿Donde deja Installous las aplicaciones descargadas?

Uno de los problemas habituales en las aplicaciones del Apple Store, es que los programadores no suelen hacer una versión lite o de prueba de forma que puedas probar si es lo que necesitas, esto es muy habitual en juegos, pero en aplicaciones profesionales es más raro. Lo que suele ocurrir es que lees las descripciones y piensas que es lo que tu buscas, pero cuando pagas y la descargas la descripción no se parece a lo que realmente es y/o no te soluciona lo que tu creías. La cosa es que por varios motivos he tenido que probar ciertas aplicaciones para asegurarme que eran las que necesitaba antes de comprarlas.

Para ello he utilizado el Installous, la herramienta de descarga de aplicaciones fuera del Apple Store.

Para ello primero hay que hacer el jailbreak, instalar Cydia, añadir la repo de Hackulo.us he instalar todo lo que esta repo contiene. Luego abrimos Installous y buscamos la aplicación que queremos y la descargamos al terminal… pero una vez descargada ¿donde se queda el fichero IPA dentro de nuestro dispositivo?

Pues bueno estos IPA se quedan en /private/var/mobile/Documents/Installous/Downloads

Por lo menos en iOS 5.x con Installous 4.x