Ciber Geek >

contraseña

Todas las cuentas de Facebook fueron vulnerables hasta hace unos días

Hace unos días un investigador en seguridad informática encontró una vulnerabilidad en el sistema de recuperación de contraseñas de Facebook que le permitía cambiar la contraseña de cualquier cuenta de la red social. Para ello solo necesitaba conocer la dirección de correo o el número telefónico del dueño de la cuenta.

Luego de reportar el error a la red social, Anand Prakash recibió 15000 dólares de parte de la empresa como parte del programa de compensación que existe para estos casos.

Facebook vulnerabilidad

El mail del programa de recompensas de Facebook

El bug

La vulnerabilidad se encontraba en el sistema para reiniciar la contraseña, el cual en un paso envía un código a la dirección de correo o por SMS al teléfono del titular de la cuenta de Facebook. El código de solo 6 dígitos permite establecer una nueva contraseña, y es esto de lo que se aprovecho el investigador, ya que mediante una técnica conocida como fuerza bruta lograba “adivinar” el código y reiniciar la contraseña.

El mecanismo de protección ante ataques de fuerza bruta funcionaba correctamente en facebook.com, pero no así en beta.facebook.com, y es en ésta ultima dirección donde Anand pudo realizar el hackeo sorteando los mecanismos de seguridad existentes.

Solución rápida

Al reportar la vulnerabilidad la gente de Facebook tardó menos de 24 horas en solucionarlo. Pero de todos modos deja en evidencia que ni las empresas más grandes, y que invierten millones en seguridad están protegidas contra errores de este tipo.

2 formas poco ortodoxas de cambiar la contraseña de WordPress

Si pueden hacer mediante la función de recordar contraseña, listo, no busquen mas, utilicen esa opcion. El tema es que a veces no se puede, tal vez hay algo mal configurado, o no queremos que el cliente se entere, por lo que enviarle un mail no es una opción (no sean boludos y envíenselo igual).

Restaurar la contraseña de WordPress con acceso mediante FTP

Para cambiar la contraseña si tienen acceso mediante FTP, o como sea que tengan acceso al archivo “functions.php” de la plantilla que están utilizando, pueden añadir el siguiente código para realizar el cambio de contraseña.

if($_GET['parametroprivado']){
var_dump(get_users(array( 'fields' => array( 'display_name', 'ID'))));
}

if($_GET['nuevapassword'] && $_GET['idusuario']){
wp_set_password( $_GET['nuevapassword'], $_GET['idusuario'] );
}

¿Qué te fumaste, pibe? ¡Nada, lo juro! Ahora les explico el porque de esos parámetros locos, como pista les cuento que es pura paranoia.

La idea del script anterior es la siguiente, al añadir esas lineas dentro de las etiquetas <?php ?> en su archivo “functions.php”, lo que hace es mostrar los usuarios y sus respectivas IDs, pero solamente si la URL tiene el parámetro “parametroprivado“, de otro modo estarían largando cosas al mundo exterior, y si bien no representa un problema de seguridad tan grave, al menos no en éste caso que solo estamos mostrando la ID y el nombre de usuario, si puede resultar feo para los usuarios que van a cargar una pagina y se van a encontrar con un pedazo de código PHP listando sus usuarios.

¿Para que necesito la ID y el nombre de usuario?

La ID es porque la necesitan pasar como parámetro en el paso 2, y el nombre es para saber que ID se corresponde con cada usuario.

Para ver el listado su URL deberia quedar mas o menos así.

http://susitio.com/?parametroprivado=1

Cambiar la contraseña

Supongamos que hicieron el paso anterior y ya vieron cual era la ID del usuario al que le quieren cambiar o poner una nueva contraseña (sé que alguien puede haber borrado sin querer un campo en la base de datos).

Ahora para realizar el cambio van a tener que acceder a la siguiente URL, y añadir como parametros la ID del usuario y la nueva contraseña.

http://susitio.com/?nuevapassword=123456&idusuario=2

Donde nuevapassword es la nueva contraseña, e idusuario es la ID que vieron anteriormente.

Y bueno, después de que cargue dicha URL la contraseña se va a ser la que pasaron como parámetro.

Restaurar la contraseña de WordPress con acceso la base de datos

La otra forma es hacerlo mediante la base de datos, por ejemplo con PHPMyAdmin pueden acceder a la base de datos donde está instalado WordPress, ir a la tabla “wp_users” y buscar el campo “user_pass” del usuario al que le quieren modificar la contraseña, en dicho campo deben ingresar el hash MD5 de la contraseña, para hacerlo pueden usar alguno de los servicios para generar estos hashes.

Así se vería la tabla luego de que le ingresan la contraseña hasheada, específicamente el campo “user_pass” es el que tiene esos “códigos raros”.

wodpress contraseña md5

MD5 “común”

Un detalle es que WordPress soporta MD5 por cuestiones de retrocompatibilidad, pero cuando detecta que una contraseña esta hasheada utilizando este algoritmo, la “re-hashea” utilizando algo un poco mas robusto, por lo que si luego de iniciar sesión vuelven a ingresar, van a ver que el valor en el campo “user_pass” cambió.

wordpress contraseña hash

Contraseña “re-hasheada” por WordPress

Magia, si tienen consultas dejen un comentario e intentaré ayudarlos.