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á nadahttp://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.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
El problema incluye a la version 2.8.3…
Actualmente no hay revision oficial que tenga resuelto el problema solo parches:
http://core.trac.wordpress.org/changeset?old_path…
Saludos
Gracias por el aviso amigo 😉
¿Para actualizar de 2.8.2 a 2.8.3 es necesario subir todos los archivos o sólo algunos?
Es raro porque me acaba de suceder, pero en un blog actualizado a la versión 2.8.3 :S
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??
Lo es, repasa el post que hay solución sencilla
da miedo de verdad
Parece que están afectadas todas las versiones, incluida la 2.8.3 http://www.martinaberastegue.com/seguridad/nueva-…
Gracias por el aviso, acabo de actualizar el post con la solución
Esto afecta tambien a la rama 2.7.x?
Parece ser que no, solo a la rama 2.8.x
Fer, sos un groso… GRACIAS!
y si no existe el usuario admin? también es vulnerable?
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.
A mi me han hecho el hack y mi único usuario administrador no se llama admin, de hecho 'admin' no existe en mi blog…
Pues ya tenemos la respuesta. Gracias por el aviso Rafa 😉
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?
Acaba de comentar Rafa que también afecta.
Che a mi no me funciono eso.
Y tambien me afecta sin tener el usuario "admin"
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.
Relee los comentarios, que ya se comentó que también afecta a usuarios administradores que no sean "admin". Y no, no afecta a la rama 2.7.x
Ah, perdón, acabo de leer la respuesta a mi pregunta lineas más arriba, estoy muy alterada y asustada. :S
Listo el hack aplicado al archivo no me funciono, nose porque, yo solo copie y pegue.
Pero bajando el archivo desde http://core.trac.wordpress.org/changeset/11798?fo… (Paciencia que media blogocosa esta intentando hacerlo) ya no me resetea el password
A mi me bajó rápido el fichero de sustitución. En un blog he recibido el aviso de cambio de clave pero lo he recibido yo afortunadamente, y ya he aplicado el cambio de fichero.
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!
@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
Gracias por la aclaración 😉
Afortunadamente ya está disponible la 2.8.4
Como siempre, gracias, ya actualizé mis blogs al 2.8.4, pero si utilizo /wp-login.php?action=lostpassword ;
me sigue apareciendo el recuadro para poner mi nombre de usuario y mail.
¿hay algun modo de evitarlo?
Lo que si: http://DOMAIN_NAME.TLD/wp-login.php?action=rp&key%5B%5D= me da una respuesta de "invalid key"
Bueno esto parece que nos ha puesto a trabajar y actualizarnos bastante más pronto de lo usual.
Saludos
Diana
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!