Le 25 avril 2023, notre équipe Wordfence Threat Intelligence a identifié et lancé le processus de divulgation responsable d’une vulnérabilité Cross-Site Scripting (XSS) stockée dans Plugin du gestionnaire de téléchargement de W3 Eden, qui est activement installé sur plus de 100 000 sites Web WordPress, ce qui en fait l’un des plugins de gestion de téléchargement les plus populaires. La vulnérabilité permet aux pirates disposant d’autorisations de niveau contributeur ou supérieures d’injecter des scripts Web malveillants dans les pages à l’aide du code court du plug-in.
Tous Wordfence Premium, Soins des motset Réponse Wordfence Les clients, ainsi que ceux qui utilisent encore la version gratuite de notre plugin, sont protégés contre tout exploit ciblant cette vulnérabilité par la protection intégrée contre les scripts intersites du pare-feu Wordfence.
Nous avons contacté W3 Eden le 25 avril 2023 et avons rapidement reçu une réponse. Après avoir fourni tous les détails de la divulgation, le développeur a publié un correctif le 1er mai 2023. Nous tenons à féliciter l’équipe de développement de W3 Eden pour sa réponse rapide et son correctif opportun.
Nous exhortons les utilisateurs à mettre à jour leurs sites avec la dernière version corrigée de Download Manager, la version 3.2.71 au moment de la rédaction de cet article, dès que possible.
Résumé des vulnérabilités de Wordfence Intelligence
Le plugin Download Manager pour WordPress est vulnérable au Stored Cross-Site Scripting via les shortcodes ‘wpdm_members’, ‘wpdm_login_form’, ‘wpdm_reg_form’ dans les versions jusqu’à, et y compris, 3.2.70 en raison d’une désinfection insuffisante des entrées et de la sortie s’échappant sur l’utilisateur fourni les attributs. Cela permet aux attaquants authentifiés disposant d’autorisations de niveau contributeur et supérieur d’injecter des scripts Web arbitraires dans des pages qui s’exécuteront chaque fois qu’un utilisateur accédera à une page injectée.
Analyse technique
Download Manager est un plugin conçu pour permettre aux utilisateurs de WordPress de gérer, suivre et contrôler les téléchargements de fichiers. Il fournit un shortcode ([wpdm_members]
) qui répertorie les auteurs et le nombre de fichiers qu’ils ont ajoutés lorsqu’ils sont ajoutés à une page WordPress. Cependant, la mise en œuvre non sécurisée de la fonctionnalité de code court du plug-in permet l’injection de scripts Web arbitraires dans ces pages. L’examen du code révèle que la méthode members de la classe User n’a pas correctement nettoyé l’entrée ‘sid’ fournie par l’utilisateur, puis charge le fichier de vue members.php, où il n’a pas non plus correctement échappé la sortie ‘sid’. Cela permet d’injecter des payloads Cross-Site Scripting basés sur des attributs via l’attribut ‘sid’.
class User {
function members($params = array()) { $sid = isset($params['sid']) ? $params['sid'] : ''; update_post_meta(get_the_ID(), '__wpdm_users_params' . $sid, $params); ob_start(); include Template::locate("members.php", __DIR__.'/views'); return ob_get_clean(); }
La méthode des membres dans la classe User
<div class="w3eden" id="wpdm-authors<?php echo isset($params['sid'])?"-{$params['sid']}":""; ?>"> <?php $this->listAuthors($params); ?> </div>
Le fichier de vue membres.php
Il existe deux autres shortcodes, un shortcode de formulaire de connexion ([wpdm_login_form]
) et un shortcode du formulaire d’inscription ([wpdm_reg_form]
), qui ajoutent des formulaires à un site WordPress. Cependant, l’implémentation non sécurisée de ces deux fonctions de shortcode, similaire à l’exemple précédent, permet également d’insérer des scripts Web arbitraires dans ces pages. L’examen du code révèle que les fonctions des deux formulaires ne nettoient pas de manière adéquate l’entrée « logo » fournie par l’utilisateur, et dans les fichiers de vue, ces sorties « logo » ne sont pas correctement échappées.
class Login {
function form($params = array()) { global $current_user; if (!isset($params) || !is_array($params)) $params = array(); if (isset($params) && is_array($params)) extract($params);
La méthode de formulaire dans la classe Login
<div class="w3eden"> <div id="wpdmlogin" <?php if(wpdm_query_var('action') == 'lostpassword') echo 'class="lostpass"'; ?>> <?php if(isset($params['logo']) && $params['logo'] != '' && !is_user_logged_in()){ ?> <div class="text-center wpdmlogin-logo"> <a href="<?php echo home_url('/'); ?>"><img alt="Logo" src="<?php echo $params['logo'];?>" /></a> </div> <?php } ?>
Le fichier de vue login-form.php
class Register {
function form($params = array()) { if (!get_option('users_can_register')) return \WPDM\__\Messages::warning(__("User registration is disabled", "download-manager"), -1); if (!isset($params) || !is_array($params)) $params = array(); ... if (!isset($params['logo'])) $params['logo'] = get_site_icon_url();
La méthode form de la classe Register
<div class="w3eden"> <div class="w3eden" id='wpdmreg'> <?php if(get_option('users_can_register')){ //LOGO if(isset($params['logo']) && $params['logo'] != '' && !isset($nologo)){ ?> <div class="text-center wpdmlogin-logo"> <a href="<?php echo esc_url(home_url('/')); ?>"><img src="<?php echo $params['logo'];?>" /></a> </div> <?php } ?>
Le fichier de vue reg-form.php
Ceux-ci permettent aux pirates de mener des attaques XSS stockées. Une fois qu’un script est injecté dans une page ou une publication, il s’exécute chaque fois qu’un utilisateur accède à la page concernée. Bien que cette vulnérabilité nécessite qu’un compte de contributeur de confiance soit compromis ou qu’un utilisateur puisse s’inscrire en tant que contributeur, les acteurs de la menace qui réussissent pourraient voler des informations sensibles, manipuler le contenu du site, injecter des utilisateurs administratifs, modifier des fichiers ou rediriger les utilisateurs vers des sites Web malveillants qui sont toutes des conséquences graves.
Calendrier de divulgation
25 avril 2023 – L’équipe Wordfence Threat Intelligence découvre la vulnérabilité XSS stockée dans Download Manager et lance une divulgation responsable.
27 avril 2023 – Nous contactons l’équipe de développement de W3 Eden et envoyons tous les détails de la divulgation.
1er mai 2023 – La version entièrement corrigée, 3.2.71, est publiée.
3 mai 2023 – Le fournisseur a informé Wordfence qu’il avait publié le correctif.
3 mai 2023 – Wordfence confirme que le correctif corrige la vulnérabilité.
Conclusion
Dans cet article de blog, nous avons détaillé une vulnérabilité XSS stockée dans le Plugin du gestionnaire de téléchargement affectant les versions 3.2.70 et antérieures. Cette vulnérabilité permet aux pirates authentifiés disposant d’autorisations de niveau contributeur ou supérieures d’injecter des scripts Web malveillants dans des pages qui s’exécutent lorsqu’un utilisateur accède à une page affectée. La vulnérabilité a été entièrement corrigée dans la version 3.2.71 du plugin.
Nous encourageons les utilisateurs de WordPress à vérifier que leurs sites sont mis à jour avec la dernière version corrigée de Download Manager.
Tous les utilisateurs de Wordfence, y compris ceux qui exécutent Wordfence Premium, Soins des motset Réponse Wordfenceainsi que les sites exécutant encore la version gratuite de Wordfence, sont entièrement protégés contre cette vulnérabilité.
Si vous connaissez quelqu’un qui utilise ce plugin sur son site, nous vous recommandons de partager cet avis avec lui pour garantir la sécurité de son site, car cette vulnérabilité présente un risque important.
Pour les chercheurs en sécurité qui cherchent à divulguer des vulnérabilités de manière responsable et à obtenir un ID CVE, vous pouvez soumettez vos découvertes à Wordfence Intelligence et potentiellement gagner une place sur notre classement.
Source link