Reinicio de contraseña de admin en WP 2.8.3 y previas (actualizado)

llave wordpress

Si aún te preguntas porque debes actualizar WordPress a la nueva versión, actualmente la 2.8.3, debes saber que las versiones anteriores tienen un fallo de seguridad que puede facilitar que alguien – malintencionadamente – reinicie la contraseña del administrador (sea el nombre de usuario ‘admin’ u otro) aún sin un email válido autorizado.

Es tan sencillo como hacer lo siguiente:

Se envía un cambio de dirección de email o nombre de usuario a través de este formulario:

/wp-login.php?action=lostpassword ;

WordPress envía una confirmación para reiniciarlo a través del típico email:

»
Alguien ha solicitado reiniciar la contraseña del siguiente sitio y usuario.
http://DOMAIN_NAME.TLD/wordpress
Username: admin
Para reiniciar tu contraseña visita la siguiente dirección, en caso contrario simplemente ignora este email y no pasará nada

http://DOMAIN_NAME.TLD/wordpress/wp-login.php?action=rp&key=o7naCKN3OoeU2KJMMsag
»

Si se hace clic en el enlace WordPress reinicia la contraseña de administrador y envía otro email con los nuevos datos de acceso.

Así es como funciona:

wp-login.php:
...[snip]....
line 186:
function reset_password($key) {
    global $wpdb;
    $key = preg_replace('/[^a-z0-9]/i', '', $key);
    if ( empty( $key ) )
        return new WP_Error('invalid_key', __('Invalid key'));
    $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s", $key));
    if ( empty( $user ) )
        return new WP_Error('invalid_key', __('Invalid key'));
...[snip]....
line 276:
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
$errors = new WP_Error();
if ( isset($_GET['key']) )
    $action = 'resetpass';
// validate action so as to default to the login screen
if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login')) && false === has_filter('login_form_' . $action) )
    $action = 'login';
...[snip]....
line 370:
break;
case 'resetpass' :
case 'rp' :
    $errors = reset_password($_GET['key']);
    if ( ! is_wp_error($errors) ) {
        wp_redirect('wp-login.php?checkemail=newpass');
        exit();
    }
    wp_redirect('wp-login.php?action=lostpassword&error=invalidkey');
    exit();
break;
...[snip ]...

Puedes incluso reiniciar la clave de admin enviando un array a la variable $key.

Puedes incluso hacer una prueba de concepto. Solo necesitas el navegador web para reproducirlo:

http://DOMAIN_NAME.TLD/wp-login.php?action=rp&key[]=

La contraseña se reiniciará sin confirmación alguna.

Da miedo ¿verdad?, pues actualiza coño., pues revisa lo que viene a continuación … 

Actualización: esta vulnerabilidad también afecta a la versión 2.8.3 y se puede solucionar como indica Martín:

Abre el fichero wp-login.php y su sustituye esta línea …

if ( empty( $key )  )

por esta otra …

if ( empty( $key ) || is_array( $key ) )

Si por cualquier motivo no te funciona este «hack» prueba a bajar la versión modificada del archivo wp-login.php del trac, con el problema solucionado, como ha hecho Ferticidio.

Esta vulnerabilidad ya la están aprovechando varios indeseables que no tienen nada mejor que hacer así que no te lo tomes a la ligera.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(0 votos, promedio: 0)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

48 comentarios en “Reinicio de contraseña de admin en WP 2.8.3 y previas (actualizado)”

  1. Pingback: Bitacoras.com

  2. Pingback: Twitted by PlanetaWP

  3. Pingback: Reinicio de contraseña de admin en WordPress < 2.8.3

  4. Acabo de probarlo con un blog que tengo, el Dashboard dice You are using WordPress 2.8.3. y aún asi pude reinciarle la contraseña sin necesidad del email de validación.

    Será que el wordpress 2.8.3 también es vulnerable??

  5. Pingback: La blogosfera bajo ataque (Actualizado con solucion al problema) | Ferticidio's

  6. Pingback: Vulnerabilidad Wordpress 2.8.3 y su solución | Tinta Fantasma

  7. Pingback: Forzar reinicio de contraseñas | Summarg

  8. Pingback: Tonta vulnerabilidad en Wordpress « Mundo Binario

    1. Buena pregunta, yo tampoco uso el usuario 'admin' por defecto pero no lo he probado. Por si acaso aplica el hack por si las moscas o limita el acceso por IP como explicaba ayer. Para probar siempre hay tiempo.

      1. Rafael P. Campoamor

        A mi me han hecho el hack y mi único usuario administrador no se llama admin, de hecho 'admin' no existe en mi blog…

  9. Perdonad por mi ignorancia, se supone que el problema es solo si el administrador tiene como nick "admin"? Porque si es por eso, no seria mas facil entrar a traves de phpmyadmin y cambiar el nick del administrador en la tabla users?

  10. Yo tampoco tengo el user por default "admin", y aún así salí afectada. Por favor, corrijan. Una pregunta para Fernando, esta vulnerabilidad afecta a versiones 2.7.x?

    En serio, gracias por poner tan fácil la explicación, que hasta yo pude solucionarlo. Mil mil mil gracias.

  11. Pingback: Bug: Reseteo de contraseña en WordPress 2.8.3 y previas

  12. Pingback: WordPress 2.8.4A | Ayuda WordPress

  13. Muchas gracias! Comprobado que eso arregla el agujero de seguridad. Estoy actualizando mis sitios y a seguir propagando esta info. Grande Martín aportando la solución!

  14. @Fernando Tellado…

    No es que la solucion que veo todos estan usando no sea segura, pero se han aumentado los cambios (se ha vuelto mas estricta en esta parte para no solo mitigar el caso de los arreglos cualquier otro), asi que deberian aplicar los cambios 11800 y 11804… ya he dejado en mi comentario anterior como bajar el archivo con los cambios necesarios (asi como ya he posteado informacion al respecto en mi blog) para así solo reemplazar con el actual y parcheado segun el equipo de wordpress (mas bien segun ryan).

    Saludos

  15. Pingback: Ya se encuentra disponible WordPress 2.8.4 | SuperUsuario

  16. Pingback: Mas problemas de seguridad en Wordpress 2.8.x | El Blog de Pablo Pando

  17. Pingback: Vulnerabilidad en Wordpress 2.8.x | 2bGeek

  18. Pingback: WordPress reporta falla crítica de seguridad « Gnostopia Hoy

  19. Pingback: Culto Geek » Blog Archive » WordPress 2.8.4 corrigiendo más problemas de seguridad

  20. Hola, muy buena la info.

    Me llamó la atención que usaras el termino "indeseables" que usaba yo hace años en mi sitio Seguridad en Internet 2.0, alguna relación?

    Muy bueno el blog

    Saludos!

  21. Pingback: 11 consejos para proteger el área de administración de WordPress | Incubaweb

  22. Pingback: 11 consejos para proteger el área de administración de WordPress : Blogografia

  23. Pingback: 11 maneras de proteger la administración de WordPress | Ayuda WordPress

  24. Pingback: WordPress 2.8.4 — Eddy Ramos blog

  25. Pingback: 11 consejos para proteger el área de administración de WordPress | Youbbie

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido