Le plugin Ninja Forms rendait vulnérable plus d’1 million de sites

0

Ninja Forms, un plugin WordPress utilisé par plus d’un million de sites, contient quatre vulnérabilités de sécurité critiques qui, ensemble, permettent à un attaquant distant de prendre le contrôle d’un site WordPress et de créer divers types de problèmes.
Ninja Forms offre aux concepteurs de sites WordPress la possibilité de créer des formulaires à l’aide d’une fonction glisser-déposer, sans aucune compétence en codage requise.

Les quatre vulnérabilités permettent aux utilisateurs moins privilégiés (même ceux qui se sont simplement inscrits sur un site) de mener plusieurs activités malveillantes. Cela inclut l’écoute clandestine des e-mails du site, la prise en charge des comptes administrateurs, l’installation de modules complémentaires arbitraires sur un site cible et la redirection des propriétaires de sites vers des destinations malveillantes.

Trois des failles nécessitent une ingénierie sociale pour pouvoir être exploité.

1er bug: Détournement de courrier électronique authentifié et prise de contrôle de compte avec le plug-in SendWP

La première vulnérabilité permet aux attaquants disposant d’un accès au niveau abonné ou supérieur d’abuser de SendWP pour intercepter tout le trafic de messagerie, y compris les liens de réinitialisation de mot de passe pour les comptes administratifs, ont déclaré les chercheurs. SendWP est un service de livraison et de journalisation des e-mails destiné à simplifier la gestion du courrier avec WordPress.

ninja forms

Les attaquants avec un accès abonné ou supérieur à un site WordPress vulnérable pourraient établir une connexion à SendWP avec leur propre compte SendWP, de sorte que tous les messages du site WordPress soient acheminés et connectés au compte SendWP des attaquants.

En cas d’exploitation, cela pourrait finalement conduire à l’exécution de code à distance et à la prise de contrôle du site en utilisant un compte administrateur pour modifier les fichiers de thème/plugin ou en téléchargeant un thème/plugin malveillant, selon Wordfence, qui a déclaré que la faille porte également une estimation CVSS de 9,9 sur 10 (les CVE sont en attente pour toutes les failles).

«À ce stade, ils peuvent surveiller toutes les données envoyées par courrier électronique, qui peuvent être des informations personnellement identifiables de l’utilisateur (PII) venant de soumissions de formulaires générés sur votre site», ont averti les chercheurs. « De plus, un attaquant pourrait déclencher une réinitialisation du mot de passe pour un compte d’utilisateur administratif, s’il pouvait découvrir le nom d’utilisateur d’un compte. »

Accomplir cela n’est pas si difficile, selon l’analyse de Wordfence.

«Afin de fournir cette fonctionnalité, le plugin enregistre l’action AJAX wp_ajax_ninja_forms_sendwp_remote_install», ont expliqué les chercheurs. «Cette action AJAX est liée à la fonction wp_ajax_ninja_forms_sendwp_remote_install_handler, qui vérifie si le plugin SendWP est installé et activé. Si le plugin n’est pas actuellement installé, alors il effectue l’installation et l’activation du plugin SendWP. »

Une fois que le plugin a été installé avec succès, la fonction renvoie l’url d’enregistrement, ainsi que le nom_client, client_secret, register_url et client_url. Ceci est utilisé pour montrer aux utilisateurs la page d’inscription et connecter facilement leur instance WordPress avec SendWP.

«Malheureusement, cette action AJAX n’avait pas de contrôle de capacité, ni de protection nonce, ce qui permettait aux utilisateurs de bas niveau, tels que les abonnés, d’installer et d’activer le plugin SendWP et de récupérer la clé client_secret nécessaire pour établir la connexion SendWP », selon l’analyse.

Une atténuation potentielle de l’exploitation automatisée et généralisée est le fait que SendWP est un module complémentaire payant, coûtant 9$ par mois et par site, ont noté les chercheurs.

2ème bug: Divulgation de la clé de connexion OAuth authentifiée

La deuxième faille a un score CVSS estimé à 7,7 et est présent dans le service Ninja Forms «Add-on Manager», un tableau de bord centralisé qui permet aux utilisateurs de gérer à distance tous les modules complémentaires Ninja Forms achetés.

Selon Wordfence, les attaquants pourraient établir une connexion OAuth pour un site WordPress vulnérable avec leur propre compte et être en mesure d’installer tous les plug-ins complémentaires achetés sur le site cible de leur choix.

Afin de terminer la connexion malveillante, les attaquants devraient inciter l’administrateur du site à cliquer sur un lien spécial pour mettre à jour le paramètre client_id dans la base de données du site avec une action AJAX modifiée.

« Le plugin enregistre l’action AJAX wp_ajax_nf_oauth qui est utilisée pour récupérer connection_url qui contient les informations nécessaires, comme le client_secret, pour établir une connexion OAuth avec le portail de gestion des modules complémentaires Ninja Forms », selon l’analyse. « Malheureusement, il n’y a pas eu de contrôle de capacité sur cette fonction. »

Cela signifie que les utilisateurs de bas niveau, tels que les abonnés, ont pu déclencher l’action et récupérer l’URL de connexion nécessaire pour établir une connexion avec le tableau de bord. Les attaquants pourraient également récupérer le client_id pour une connexion OAuth déjà établie, selon les chercheurs.

3ème bug: Falsification de requête inter-site qui déconnecte le service OAuth

La troisième faille concerne la capacité du gestionnaire de modules complémentaires Ninja Forms à déconnecter facilement une connexion OAuth établie en quelques clics. Cette faille a une note CVSS de 6,1, ce qui en fait une vulnérabilité de gravité moyenne.

Les attaquants pourraient envoyer une requête pour déconnecter la connexion OAuth actuelle – Wordfence a noté que cela «pourrait être une expérience déroutante pour un propriétaire de site». Pour faire cela, les pirates devraient créer une demande légitime, l’héberger en externe et inciter un administrateur à cliquer sur un lien ou une pièce jointe.

«Afin de fournir cette fonctionnalité, le plugin a enregistré une action AJAX wp_ajax_nf_oauth_disconnect liée à la fonction disconnect(). La fonction disconnect() déconnecterait simplement une connexion établie en supprimant les options associées aux paramètres de connexion dans la base de données », selon Wordfence. « Malheureusement, cette fonctionnalité n’avait pas de protection nonce. »

4ème bug: Redirection d’administrateur

Le dernier problème est présent dans le processus de connexion OAuth; il est considéré comme étant de gravité moyenne avec un score CVSS de 4,8.

Pour exploiter cela, un attaquant aurait besoin de créer une URL spéciale avec le paramètre de redirection défini sur un site arbitraire, puis de pousser un administrateur à cliquer sur le lien. En cas de succès, l’administrateur pourrait être redirigé vers un site malveillant externe qui pourrait infecter l’ordinateur de l’administrateur avec des logiciels malveillants.

«Le plugin enregistre une action AJAX, wp_ajax_nf_oauth_connect, qui est enregistrée dans la fonction connect() qui est utilisée pour rediriger un propriétaire de site vers la page de service Ninja Forms du site WordPress après que l’utilisateur ait terminé le processus de connexion OAuth», selon l’analyse. « Cette fonction utilise wp_safe_redirect pour rediriger les propriétaires de sites vers la page admin.php?page=ninja-forms#services par défaut. »

Cependant, le problème est que le paramètre « redirection » peut être remplacé par des valeurs différentes, pour rediriger à la place l’administrateur du site vers une URL arbitraire fournie dans ce paramètre.

«Il n’y a pas de protection sur l’URL de redirection validant la destination de la redirection, ni de protection pour empêcher un attaquant d’utiliser la fonction pour rediriger un administrateur de site vers un emplacement malveillant», ont expliqué les chercheurs. « Il y a eu l’utilisation de wp_verify_nonce(), cependant, il a été commenté et rendu inutilisable. »

Saturday Drive, la société mère du plugin, a corrigé toutes les failles dans la version 3.4.34.1.

Si cet article vous a plu, jetez un œil à notre article précédent.

Laisser un commentaire