Skip to content
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Se protéger du hack wordpress 2.8.3 qui réinitialise le mot de passe

wpmigreow0 Modérez les commentaires WordPress sans utiliser linterface dadmin

Si vous avez un site ou un blog sous WordPress, il y a un hack qui tourne depuis quelques jours (et dont j’ai appris l’existence ce matin), qui permet de forcer la réinitialisation du mot de passe admin. En gros, c’est tout con (et vous pouvez essayer sur votre wordpress), lorsque vous entrez l’url suivante :

http://VOTRE-DOMAINE.COM/wp-login.php?action=rp&key[]=

Vous obtenez un très sympathique message  vous disant que le mot de passe a été réinitialisé. Le hack n’est pas dangereux sauf que l’admin devra ouvrir sa boite mail pour retrouver le nouveau mot de passe… Imaginez donc une moulinette qui effectue cette opération toutes les 2 secondes et le webmaster ou le bloggeur devient FOU !

Voici donc comme désactiver cette fonction temporairement, en attendant la mise à jour de WordPress.

Ouvrez le fichier wp-login.php et recherchez la fonction suivante :

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'));
// Generate something random for a password...
$new_pass = wp_generate_password();
do_action('password_reset', $user, $new_pass);
wp_set_password($new_pass, $user->ID);
update_usermeta($user->ID, 'default_password_nag', true);
$message  = sprintf(__('Username: %s'), $user->user_login) . "rn";
$message .= sprintf(__('Password: %s'), $new_pass) . "rn";
$message .= site_url('wp-login.php', 'login') . "rn";
$title = sprintf(__('[%s] Your new password'), get_option('blogname'));
$title = apply_filters('password_reset_title', $title);
$message = apply_filters('password_reset_message', $message, $new_pass);
if ( $message && !wp_mail($user->user_email, $title, $message) )
die('<p>' . __('The e-mail could not be sent.') . "<br />n" . __('Possible reason:
your host may have disabled the mail() function...') . '</p>');
wp_password_change_notification($user);
return true;
}

Mettez tout son contenu en commentaire afin d’empêcher la réinitialisation du mot de passe mais laissez le « return true » à la fin

Ça donnera ça :

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'));
// Generate something random for a password...
$new_pass = wp_generate_password();
do_action('password_reset', $user, $new_pass);
wp_set_password($new_pass, $user->ID);
update_usermeta($user->ID, 'default_password_nag', true);
$message  = sprintf(__('Username: %s'), $user->user_login) . "rn";
$message .= sprintf(__('Password: %s'), $new_pass) . "rn";
$message .= site_url('wp-login.php', 'login') . "rn";
$title = sprintf(__('[%s] Your new password'), get_option('blogname'));
$title = apply_filters('password_reset_title', $title);
$message = apply_filters('password_reset_message', $message, $new_pass);
if ( $message && !wp_mail($user->user_email, $title, $message) )
die('<p>' . __('The e-mail could not be sent.') . "<br />n" . __('Possible reason:
your host may have disabled the mail() function...') . '</p>');
wp_password_change_notification($user);
*/
return true;
}

La fonction ne fera alors que renvoyer VRAI …

Cherchez ensuite le petit passage suivant :

case 'rp' :
$errors = reset_password($_GET['key']);
if ( ! is_wp_error($errors) ) {
wp_redirect('wp-login.php?checkemail=checkemail');
exit();
}

et commentez la redirection en mettant ensuite un echo si vous voulez laisser un petit message au script kiddy :

case 'rp' :
$errors = reset_password($_GET['key']);
if ( ! is_wp_error($errors) ) {
/*wp_redirect('wp-login.php?checkemail=checkemail');*/
echo('Mouahahaha ! Tu crois quand meme pas que tu vas
hacker mon site, petit script kiddy ? Arf !');
exit();
}

Et voilà ! Vous êtes protégé !

Ensuite, lorsque la mise à jour de WordPress arrivera (ce qui ne devrait pas tarder), vous n’aurez qu’à faire la mise à jour et le fichier wp-login.php sera écrasé avec la nouvelle version, donc vous reviendrez à la normale.

Sinon, une autre technique consiste à simplement placer un htaccess et un htpasswd sur votre serveur pour ajouter un niveau de protection. Puis allez lire ces quelques (vieux mais toujours valables) conseils sur la façon de sécuriser son blog.

Et Stagueve me dit aussi dans les commentaires, qu’on peut tout simplement virer le compte admin et se créer un compte « toto » (ou autre) qui aurait les droits admin. Effectivement, pourquoi faire simple quand on peut faire compliqué :-))) Ma devise ? Roooohh

Bonne chance !

[Source du hack]


NordVPN à moins de 3€/mois

-68% 3,3€/mois durant 2 ans

Protection en un clic, fonctionnalité Kill Switch, masquage de votre adresse IP, prise en charge des partages de fichiers en p2p, protection contre les malwares et les pubs, streaming sans interruption, test de fuite DNS et même possibilité de coupler l’outil avec l’anonymat de The Onion Router … sont quelques-unes des autres options disponibles.

NordVPN a tissé une toile de serveurs dans le monde entier (plus de 5 500 dans 60 pays) permettant ainsi de se localiser dans la zone géographique de son choix. Vous avez envie d’un Anime japonais ou bien d’une exclusivité US ? Aucun problème. À vrai dire, vous pouvez même vous localiser en France en cas de déplacement à l’étranger.

En complément de cet impressionnant réseau, NordVPN a aussi développé la fonctionnalité SmartPlay qui permet d’accéder en toute sécurité aux contenus qui sont normalement inaccessibles. C’est un système de SmartDNS performant qui ne nécessite pas d’intervention complexe, vous profitez d’une connexion sécurisée et vous visionnez le contenu de votre choix en streaming sans vous prendre la tête.

Profiter de la promo



Les articles du moment