Une mise à jour de sécurité critique a récemment été publiée pour Duplicateur, l’un des plugins les plus populaires de l’écosystème WordPress. Plus d’un million de sites WordPress ont été affectés par une vulnérabilité permettant aux attaquants de télécharger des fichiers arbitraires à partir des sites victimes. Nous invitons tous les utilisateurs de Duplicator à mettre à jour vers la version 1.3.28 dès que possible.
Nous détectons une exploitation active de cette vulnérabilité à l’état sauvage et estimons que plus d’un demi-million de sites utilisent toujours une version vulnérable. La protection par pare-feu intégrée empêche ces attaques pour tous les utilisateurs de Wordfence, à la fois Premium et ceux qui sont toujours sur la version gratuite de Wordfence. Comme toujours, il est toujours important d’effectuer des mises à jour de sécurité indépendamment des autres protections.
Dans l’article d’aujourd’hui, nous allons jeter un bref coup d’œil au code vulnérable, discuter de sa gravité et partager les détails des attaques en cours contre lui.
Analyse de vulnérabilité de téléchargement de fichier
Le plugin Duplicator aide les administrateurs de sites à migrer et à copier des sites WordPress. Une partie de cette fonctionnalité consiste à exporter le contenu des bases de données et des fichiers dans des archives portables. Lorsqu’un administrateur crée une nouvelle copie de son site, Duplicator lui permet de télécharger les fichiers générés à partir de son tableau de bord WordPress.
Cela a été implémenté comme une demande AJAX dans l’interface d’administration de Duplicator. Les boutons de téléchargement déclenchent chacun un appel au gestionnaire WordPress AJAX avec l’action duplicator_download
et un file
, indiquant l’emplacement du fichier à télécharger. Lorsque vous cliquez dessus, le fichier demandé est téléchargé et l’utilisateur n’a pas besoin de quitter ou de recharger sa page actuelle.
public static function duplicator_download() { $file = sanitize_text_field($_GET['file']); $filepath = DUPLICATOR_SSDIR_PATH.'/'.$file; // Process download if(file_exists($filepath)) { // Clean output buffer if (ob_get_level() !== 0 && @ob_end_clean() === FALSE) { @ob_clean(); } header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($filepath).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filepath)); flush(); // Flush system output buffer try { $fp = @fopen($filepath, 'r'); if (false === $fp) { throw new Exception('Fail to open the file '.$filepath); } while (!feof($fp) && ($data = fread($fp, DUPLICATOR_BUFFER_READ_WRITE_SIZE)) !== FALSE) { echo $data; } @fclose($fp); } catch (Exception $e) { readfile($filepath); } exit; } else { wp_die('Invalid installer file name!!'); } }
Malheureusement, duplicator_download
l’action a été enregistrée via wp_ajax_nopriv_
et était accessible aux utilisateurs non authentifiés. Pour aggraver les choses, aucune validation n’a limité les chemins de fichiers téléchargés. le file
le paramètre est transmis sanitize_text_field
et ajouté à la constante du plugin DUPLICATOR_SSDIR_PATH
, mais la traversée du répertoire était toujours possible. Un attaquant pourrait accéder à des fichiers en dehors du répertoire prévu de Duplicator en soumettant des valeurs telles que ../../../file.php
pour naviguer dans la structure de fichiers du serveur.
En plus de l’action AJAX, la même vulnérabilité existait dans Duplicator duplicator_init()
, qui est appelée par WordPress init
crochet.
function duplicator_init() { if (isset($_GET['action']) && $_GET['action'] == 'duplicator_download') { $file = sanitize_text_field($_GET['file']); $filepath = DUPLICATOR_SSDIR_PATH.'/'.$file; // Process download if(file_exists($filepath)) { // Clean output buffer if (ob_get_level() !== 0 && @ob_end_clean() === FALSE) { @ob_clean(); } header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($filepath).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filepath)); flush(); // Flush system output buffer try { $fp = @fopen($filepath, 'r'); if (false === $fp) { throw new Exception('Fail to open the file '.$filepath); } while (!feof($fp) && ($data = fread($fp, DUPLICATOR_BUFFER_READ_WRITE_SIZE)) !== FALSE) { echo $data; } @fclose($fp); } catch (Exception $e) { readfile($filepath); } exit; } else { wp_die('Invalid installer file name!!'); } } } add_action('init', 'duplicator_init');
Parce qu’il était accroché à init
, cette fonction a été exécutée à chaque chargement de page WordPress pour les utilisateurs connectés et les visiteurs non authentifiés. Cela signifie qu’un attaquant pourrait déclencher un téléchargement de fichier en ajoutant des chaînes de requête à n’importe quel chemin sur un site vulnérable, en contournant la surveillance spécifique à AJAX.
Ces deux cas vulnérables ont été corrigés depuis Duplicator 1.3.28. L’action AJAX a été mise à jour pour valider correctement les noms de fichiers et nécessite désormais un ID et un hachage correspondants pour permettre le téléchargement du fichier. le duplicator_init()
a été entièrement supprimée.
Attaquants volant des informations d’identification de la base de données
Les vulnérabilités de téléchargement de fichiers arbitraires peuvent être un problème critique quelle que soit la plate-forme du site vulnérable, mais de telles attaques contre les sites WordPress ciblent principalement un fichier: wp-config.php
.
Selon le site, wp-config.php
peut contenir n’importe quelle quantité de code personnalisé, mais les attaquants le ciblent pour accéder aux informations d’identification de la base de données d’un site. Avec ces informations d’identification, un attaquant peut accéder directement à la base de données du site victime s’il autorise les connexions à distance. Cet accès peut être utilisé par un attaquant pour créer son propre compte Administrateur et compromettre davantage le site, ou simplement pour injecter du contenu ou récolter des données.
Cependant, les sites dotés de bases de données locales restent préoccupants. Dans les environnements d’hébergement partagé, il est possible pour un utilisateur sur un serveur partagé d’accéder à la base de données locale d’un autre site sur le même serveur. Cela limite certainement la surface d’attaque du site vulnérable, mais reste un problème grave.
Au moment d’écrire ces lignes, Wordfence a bloqué plus de 60 000 tentatives de téléchargement wp-config.php
fichiers avec cette vulnérabilité. Environ 50 000 de ces événements ont eu lieu avant que Duplicator ne corrige la faille, ce qui en fait une vulnérabilité zéro jour.
Presque toutes ces attaques ont été lancées à partir de la même adresse IP: 77.71.115.52
. Cette adresse IP pointe vers un serveur Web situé en Bulgarie, appartenant à Varna Data Center EOOD. Une poignée de sites Web sont hébergés sur ce serveur, ce qui suggère que l’attaquant pourrait être le proxy de leurs attaques via un site Web compromis. Nous avons récemment associé cette adresse IP à d’autres activités malveillantes contre WordPress, et des recherches sur son activité sont en cours.
Indicateurs de compromis (IOC)
Les indicateurs de compromis (IOC) suivants peuvent être utilisés pour déterminer si votre site a peut-être été attaqué.
- Le trafic enregistré à partir de l’adresse IP de l’acteur de menace doit être considéré comme suspect:
- Les attaques de cette campagne sont émises via des requêtes GET avec les chaînes de requête suivantes:
action=duplicator_download
file=/../wp-config.php
- Remarque: Comme cette vulnérabilité peut être exploitée via WP AJAX, il est possible de l’exploiter via une requête POST. Dans ce cas, il est possible que le
action
paramètre à passer dans le corps POST au lieu de la chaîne de requête. Cela empêchera laaction=duplicator_download
chaîne d’apparaître dans les journaux HTTP. lefile
paramètre doit être passé comme une chaîne de requête, cependant, et est un indicateur fiable.
Chronologie
- 10 février 2020 – Premières attaques contre la vulnérabilité Duplicator. Les utilisateurs de Wordfence sont déjà en sécurité grâce à la protection par pare-feu intégrée.
- 12 février 2020 – Duplicator publie la version 1.3.28 pour corriger la faille.
Conclusion
La base d’installation massive de Duplicator, combinée à la facilité d’exploitation de cette vulnérabilité, fait de cette faille une cible remarquable pour les pirates. Il est essentiel que les utilisateurs de Duplicator mettent à jour leurs plug-ins vers la dernière version disponible dès que possible pour supprimer ce risque. Tous les utilisateurs de Wordfence sont protégés contre ces attaques, mais n’oubliez pas de mettre à jour malgré cela. De plus, en raison de la nature des fonctionnalités de Duplicator, il est probable qu’elles ne sont plus nécessaires sur votre site. Si vous n’avez pas l’intention de l’utiliser pour migrer ou cloner votre site dans un avenir immédiat, vous pouvez supprimer le plugin sans souci. Il peut toujours être réinstallé ultérieurement si nécessaire.
Si vous pensez que votre site a été attaqué via cette vulnérabilité, il est essentiel de modifier immédiatement vos informations d’identification de base de données et vos sels WordPress. Si vous craignez qu’un attaquant n’ait obtenu un accès non autorisé à votre site, pensez à demander à nos analystes experts d’effectuer une Audit de sécurité du site pour assurer votre sécurité est intacte.
Source link