6 may. 2017

Todas las versiones de WordPress vulnerables a reset de contraseñas

El 3 de mayo, se publicó una nueva vulnerabilidad (CVE-2017-8295) que afecta a todas las versiones de Wordpress, incluyendo la última versión 4.7.4, que puede permitir a un atacante resetear remotamente la contraseña y acceder con cualquier usuario.

La vulnerabilidad está en la página de solicitud de restablecimiento de contraseña, concretamente en la posibilidad de modificar el contenido de la variable SERVER_NAME en la función wp-includes/pluggable.php:
if ( !isset( $from_email ) ) {

        // Get the site domain and get rid of www.
        $sitename = strtolower( $_SERVER['SERVER_NAME'] );
        if ( substr( $sitename, 0, 4 ) == 'www.' ) {
                $sitename = substr( $sitename, 4 );
        }
       
$from_email = '[email protected]' . $sitename; }
Wordpress utiliza la variable SERVER_NAME para formar la cabecera From/Return-Path del correo.  El problema es que la mayoría de los servidores web, como Apache, por defecto setean SERVER_NAME con el hostname provisto por el cliente (dentro de la cabecera HTTP_HOST):

https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname

Como SERVER_NAME puede ser modificado, se podrá cambiar el Host en la cabecera:

POST /wp/wordpress/wp-login.php?action=lostpassword HTTP/1.1
Host: injected-attackers-mxserver.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 56

user_login=admin&redirect_to=&wp-submit=Get+New+Password
Y el resultado es que $from_email en Wordpress será: [email protected]

De esta manera, se generará un correo saliente con esa dirección en From/Return-Path.

En definitiva, si se conoce el administrador o la dirección de correo electrónico de cualquier usuario de destino, se puede obtener el enlace de restablecimiento de contraseña por estos u otros métodos y, por ende, restablecer la contraseña de la cuenta de cualquier usuario.

De momento no hay una solución oficial, pero para paliar el problema se recomienda forzar un nombre estático para UseCanonicalName.

Actualización: como puede verse, es necesario un componente de ingeniería social para engañar a la víctima a que haga clic sobre el enlace recibido.

Referencia:
https://exploitbox.io/vuln/WordPress-Exploit-4-7-Unauth-Password-Reset-0day-CVE-2017-8295.html

Contenido completo en fuente original HackPlayers

1 comentario:

  1. hola,tengo una duda,como puedo explotarlo,porque no me ba quedado claro

    ResponderEliminar

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!