Hace poco me encontré con un sitio de WordPress (v 4.7.2) con un archivo wp-config.php expuesto, dentro del cual se podían acceder a los secretos de la clave de autorización del servidor de texto sin formato.
Después de leer el artículo de Mike Czumak sobre cómo generar una cookie de WordPress, entiendo a un alto nivel cómo puede funcionar la generación de cookies de sesión de autenticación WP:
enlace
Las entradas pertinentes dependientes del host requeridas para el proceso de fuerza bruta son un ID de usuario de WordPress válido, el nombre del servidor y los secretos AUTH del servidor de wp-config.php.
Sin embargo, el artículo se aplica a WordPress 3.9. Me pregunto si el ataque de fuerza bruta descrito en el artículo es posible en versiones más nuevas. Probé el POC y descubrí que las cookies de autenticación de la versión 3.9 generadas estaban en un formato más corto que las requeridas para 4.7.2.
La comparación del código fuente de WordPress revela un parámetro $token
adicional que se usa cuando se genera $auth_cookie
.
3.9
$auth_cookie = wp_generate_auth_cookie($user_id, $expiration, $scheme);
$logged_in_cookie = wp_generate_auth_cookie($user_id, $expiration, 'logged_in');
4.7.2
if ( '' === $token ) {
$manager = WP_Session_Tokens::get_instance( $user_id );
$token = $manager->create( $expiration );
}
$auth_cookie = wp_generate_auth_cookie( $user_id, $expiration, $scheme, $token );
$logged_in_cookie = wp_generate_auth_cookie( $user_id, $expiration, 'logged_in', $token );
Estoy en el proceso de informar el problema a los propietarios del sitio. No he podido seguir completamente el código PHP más reciente (> 3.9) y, por lo tanto, quisiera algunas sugerencias sobre si el mismo tipo de ataque de fuerza bruta de generación de cookies es factible en la versión 4.7.2.