Il y a quelques semaines, notre équipe de renseignement sur les menaces a découvert plusieurs vulnérabilités présentes dans Minimal Coming Soon & Maintenance Mode – Page Coming Soon, un plugin WordPress installé sur plus de 80 000 sites Web. La faiblesse la plus grave a permis à un attaquant d’exploiter Cross Site Request Forgery (CSRF) et d’activer le mode de maintenance tout en injectant des scripts intersites (XSS), en plus de plusieurs modifications de paramètres importantes. Nous avons découvert plus tard des faiblesses supplémentaires qui permettaient à tout utilisateur authentifié d’activer / désactiver le mode de maintenance, d’exporter les paramètres et de modifier les thèmes du mode de maintenance.

Nous avons divulgué le problème en privé au développeur du plug-in, avec lequel nous travaillions déjà sur un problème de sécurité dans 301 redirections – Easy Redirects Manager. Comme nous l’avons vu avec les redirections 301, ils ont rapidement reconnu le rapport et commencé à travailler sur un correctif.

Pour les vulnérabilités présentes dans Bientôt disponible et mode de maintenance minimal, Les clients Wordfence Premium ont reçu de nouvelles règles de pare-feu pour se protéger contre les exploits; les utilisateurs gratuits recevront ces règles après trente jours, le 2 février 2020.


Contrôles nonce nécessaires pour valider les modifications des paramètres

le Minimal Coming Soon & Maintenance Mode – Page Coming Soon Le plugin fournit une multitude de fonctionnalités pour aider à personnaliser la page de maintenance ou à venir d’un site, toutes accessibles dans une zone de paramètres centralisée.

Malheureusement, ce plugin n’avait aucun contrôle nonce sur aucun des paramètres pour vérifier qu’une demande provenait d’une source légitime, telle qu’un utilisateur administratif connecté. L’absence de vérifications de nonce a créé une vulnérabilité CSRF, et un attaquant pourrait créer une demande déguisée par un lien pour inciter un propriétaire de site à modifier les paramètres du plugin.

Extrait de code vulnérable:

 } elseif ( isset( $_POST['signals_csmm_submit'] ) ) { {

Extrait de code révisé avec vérification nonce:

	  } elseif ( isset( $_POST['signals_csmm_submit'] ) && isset($_POST['csmm_save_nonce']) && wp_verify_nonce($_POST['csmm_save_nonce'], 'csmm_save_settings')) {

La fonctionnalité des paramètres augmente considérablement la gravité de cette vulnérabilité. Dans ce cas, chaque paramètre contrôlant les fonctionnalités du plugin pourrait être modifié. Cela comprenait des fonctionnalités telles que l’insertion de code HTML personnalisé, l’activation du mode de maintenance, la liste blanche IP, la conception générale de contenu et l’importation de logos.

Un attaquant capable d’amener un administrateur à cliquer sur un lien avec une demande spécialement conçue pourrait créer des ravages pour les propriétaires de sites et leurs visiteurs. Un lien malveillant pourrait mettre le site vulnérable hors ligne en activant le mode de maintenance tout en injectant un javascript malveillant dans le champ HTML personnalisé. Ce script malveillant s’exécutait alors lorsqu’un utilisateur innocent parcourait le site. Cette vulnérabilité XSS pourrait rediriger les visiteurs du site vers des sites Web malveillants, infecter des ordinateurs vulnérables ou effectuer d’autres actions malveillantes.

XSS exploité dans le plugin Minimal Coming Soon & Maintenance Mode.

Un attaquant pourrait également apporter plusieurs modifications supplémentaires importantes, telles que l’activation du paramètre “Suspendre temporairement les moteurs de recherche”, nuire au classement des moteurs de recherche d’un site ou inclure des fichiers distants en tant que “logo” sur le site, avec peu ou pas de restrictions sur le type de fichier.

Cette vulnérabilité est similaire à ce que nous avons vu dans un autre plugin en mode maintenance, Maintenance WP, il y a quelques semaines. Bien que CSRF soit difficile à protéger, la protection XSS intégrée du pare-feu Wordfence protège contre toutes les tentatives XSS effectuées lors d’une tentative d’exploitation CSRF. Évitez les attaques CSRF en ne cliquant pas sur les liens ou les pièces jointes provenant de sources non fiables.


La description: Autorisations non sécurisées: activer et désactiver le mode de maintenance
Plugin concerné: Minimal Coming Soon & Maintenance Mode – Page Coming Soon
Versions concernées: <= 2,10
ID CVE: CVE-2020-6168
Score CVSS: 7.1 (Élevé)
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: L / UI: N / S: U / C: N / I: L / A: H
Version corrigée: 2.15

le Bientôt disponible et mode de maintenance minimal Le plugin offre aux utilisateurs la possibilité d’activer et de désactiver le mode de maintenance à partir de la barre d’administration pour rendre plus pratique pour les administrateurs de basculer entre les deux modes lorsqu’ils effectuent la maintenance sur un site.

Afin de fournir cette fonctionnalité, le plugin enregistre une action d’administration avec un is_admin() vérifier juste avant l’action enregistrée. Malheureusement, il est faux de penser que le is_admin() vérifie qu’une demande provient d’un administrateur connecté au tableau de bord d’administration. cependant, is_admin() vérifie uniquement que la demande est envoyée à une page administrative. Les pages d’administration sont accessibles à tout utilisateur connecté, pas seulement aux administrateurs.

Cela a créé une faille qui a permis à tout utilisateur authentifié disposant d’autorisations d’abonné ou supérieur à la possibilité d’activer et de désactiver le mode de maintenance sur un site vulnérable en envoyant une simple demande. Si un attaquant n’était pas en mesure de créer un compte d’abonné sur un site Web vulnérable sans inscription ouverte, il pourrait tenter d’exploiter cela en utilisant CSRF en raison du manque de vérifications de nonce.

Extrait de code vulnérable:

class CSMM {
 static function init() {
   if (is_admin()) {
     add_action('admin_action_csmm_change_status', array(__CLASS__, 'change_status'));
   }
 'csmm_change_status', 'new_status' => 'disabled', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
	  } else {
	    $action_url = add_query_arg(array('action' => 'csmm_change_status', 'new_status' => 'enabled', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
	  }

Preuve de concept

Afin d’exploiter cette vulnérabilité, un attaquant se connecterait en tant qu’utilisateur avec des autorisations d’abonné ou supérieures et enverrait la demande suivante pour activer le mode de maintenance:

/wp-admin/admin.php?action=csmm_change_status&new_status=enabled&redirect=/wp-admin/

Alternativement, un acteur malveillant pourrait envoyer la demande suivante pour désactiver le mode de maintenance:

/wp-admin/admin.php?action=csmm_change_status&new_status=disabled&redirect=/wp-admin/

Les clients Wordfence Premium ont déjà reçu de nouvelles règles de pare-feu pour se protéger contre ces exploits; les utilisateurs gratuits recevront ces règles après trente jours, le 2 février 2020.

La description: Autorisations non sécurisées: paramètres d’exportation / changement de thème
Plugin concerné: Minimal Coming Soon & Maintenance Mode – Page Coming Soon
Versions concernées: <= 2,15
ID CVE: CVE-2020-6166
Score CVSS: 5.4 (Moyen)
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: L / UI: N / S: U / C: L / I: L / A: N
Version corrigée: 2.17

Un autre ensemble de fonctionnalités fournies par le Bientôt disponible et mode de maintenance minimal le plugin inclut la possibilité d’exporter les paramètres et de changer les thèmes du mode de maintenance.

Comme pour la vulnérabilité précédente, nous voyons la même erreur ici: is_admin() semble être la vérification des autorisations incorrecte utilisée pour vérifier qu’une action est déclenchée par un utilisateur administratif, alors qu’il vérifie simplement que la demande est envoyée à une page du tableau de bord administratif.

Cela a créé une faille qui permettrait à tout utilisateur connecté en tant qu’abonné ou supérieur d’exporter les paramètres du plugin en tant que fichier .txt ou de modifier le thème de la page de maintenance sur un site vulnérable.

Exemple de code vulnérable pour l’exportation des paramètres:

function csmm_plugin_admin_init() {
	  if (!is_admin()) {
	    Return;
}
add_action('admin_action_csmm_export_settings', 'csmm_export_settings');
function csmm_export_settings() {
    $filename = str_replace(array('http://', 'https://'), '', home_url());
    $filename = str_replace(array('/', '\', '.'), '-', $filename);
    $filename .= '-' . date('Y-m-d') . '-csmm.txt';

    $options = csmm_get_options();
    unset($options['none']);
    $options = apply_filters('csmm_options_pre_export', $options);

    $out = array('type' => 'CSMM', 'version' => csmm_get_plugin_version(), 'data' => $options);
    $out = json_encode($out);

    header('Content-Type: text/plain');
    header('Content-Disposition: attachment; filename=' . $filename);
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . strlen($out));

    @ob_end_clean();
    flush();

    echo $out;
    exit;
  } // export_settings

Preuve de concept

Afin d’exploiter cette vulnérabilité, un attaquant devrait se connecter avec des autorisations d’abonné ou supérieures et envoyer la demande suivante pour exporter les paramètres du plugin:

/wp-admin/admin.php?action=csmm_export_settings&redirect=/wp-admin/

Alternativement, un acteur malveillant pourrait envoyer la demande suivante pour changer le thème:

/wp-admin/admin.php?action=csmm_activate_theme&theme=minimal&redirect=/wp-admin/

Les clients Wordfence Premium ont déjà reçu de nouvelles règles de pare-feu pour se protéger contre ces exploits; les utilisateurs gratuits recevront ces règles après trente jours, le 2 février 2020.

Chronologie

18 décembre 2019 – Premier contact avec le développeur et notification des problèmes CSRF / XSS. Aucune règle déployée car notre règle XSS existante atténue la partie XSS de l’attaque.
19 décembre 2019 – Le développeur répond et reconnaît les problèmes.
25 décembre 2019 – Le développeur publie le premier patch.
3 janvier 2020 – Découverte de problèmes de sécurité supplémentaires révélés au développeur du plugin. Nouvelles règles de pare-feu publiées pour les utilisateurs premium de Wordfence.
7 janvier 2020 – Le développeur reconnaît les vulnérabilités supplémentaires et commence à travailler sur des correctifs supplémentaires.
8 janvier 2020 – Le patch final est sorti.
2 février 2020 – Les utilisateurs gratuits reçoivent des règles de pare-feu.

Conclusion

Dans le post d’aujourd’hui, nous avons détaillé plusieurs vulnérabilités présentes dans le Minimal Coming Soon & Maintenance Mode – Page Coming Soon plugin, qui comprenait une vulnérabilité critique. Heureusement, le développeur du plugin a été incroyablement rapide à répondre et à publier un correctif pour les points de terminaison vulnérables. Ces failles ont toutes été corrigées dans la version 2.17 et nous exhortons les utilisateurs à mettre à jour vers la dernière version disponible dès que possible.

Sites en cours d’exécution Wordfence Premium sont protégés des attaques contre cette vulnérabilité depuis le 3 janvier 2020. Les sites exécutant la version gratuite de Wordfence recevront la mise à jour des règles de pare-feu le 2 février 2020 et devraient mettre à jour le plugin immédiatement.


Source link

%d blogueurs aiment cette page :