Vulnerabilità in Easy SMTP Plugin WP
Come al solito durante il fine settimana, mentre le persone normali cercano di distrarsi dal solito tran tran quotidiano e lavorativo è stata scoperta una vulnerabilità nel famoso plugin WordPress Easy WP SMTP. Il plug-in consente agli utenti di configurare le connessioni SMTP per le e-mail in uscita ed è molto famoso ed usato. La vulnerabilità è presente solo nella versione 1.3.9 del plug-in e tutti gli utilizzatori del plugin dovrebbero aggiornare alla 1.3.9.1 il più rapidamente possibile per risolvere il problema.
Questa vulnerabilità è sotto attacco e viene utilizzata da hacker malintenzionati per stabilire in modo massivo il controllo amministrativo dei siti interessati.
Controlli di accesso insufficienti
La radice della vulnerabilità è nella funzionalità di importazione / esportazione che è stata aggiunta a Easy WP SMTP nella versione 1.3.9. Il nuovo codice risiede nel admin_init
hook del plugin , che viene eseguito in wp-admin/
script come admin-ajax.php
e admin-post.php
.
$is_import_settings = filter_input( INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT ); if ( $is_import_settings ) { $err_msg = __( 'Error occurred during settings import', 'easy-wp-smtp' ); if ( empty( $_FILES[ 'swpsmtp_import_settings_file' ] ) ) { echo $err_msg; wp_die(); } $in_raw = file_get_contents( $_FILES[ 'swpsmtp_import_settings_file' ][ 'tmp_name' ] ); try { $in = unserialize( $in_raw ); if ( empty( $in[ 'data' ] ) ) { echo $err_msg; wp_die(); } if ( empty( $in[ 'checksum' ] ) ) { echo $err_msg; wp_die(); } if ( md5( $in[ 'data' ] ) !== $in[ 'checksum' ] ) { echo $err_msg; wp_die(); } $data = unserialize( $in[ 'data' ] ); foreach ( $data as $key => $value ) { update_option( $key, $value ); } set_transient( 'easy_wp_smtp_settings_import_success', true, 60 * 60 ); $url = admin_url() . 'options-general.php?page=swpsmtp_settings'; wp_safe_redirect( $url ); exit;
Quando questo hook si attiva, il plugin verifica l’esistenza del parametro POST swpsmtp_import_settings
. Se questo parametro è impostato su 1, si presume che sia in corso un’importazione e si verifichi il caricamento di un file come swpsmtp_import_settings_file
. I contenuti del file caricato non sono serializzati e update_option
vengono eseguiti su ogni coppia chiave / valore specificata.
E qui si presentano i problemi.
Innanzitutto non vengono eseguiti controlli di accesso durante questo processo, quindi un utente malintenzionato non ha bisogno di autorizzazioni speciali: esegue e basta.
Quindi, il codice potrebbe venire eseguito anche da utenti non autenticati alla Dashboard, poiché questa chiamata viene eseguita anche per sessioni disconnesse.
Quindi, un input “sporco” viene passato a unserialize()
, che crea una vulnerabilità di injection object .
Infine, tutte le opzioni fornite dall’utente vengono aggiornate. Ciò consente a un utente malintenzionato di modificare qualsiasi valore nella tabella wp_options
di un sito , quindi qualsiasi settings del sito.
Come difendersi da tali attacchi
Gli attacchi contro questa vulnerabilità sono diffusi e possono garantire il pieno controllo dei siti vulnerabili agli aggressori. Come sempre, è importante che gli utenti aggiornino regolarmente i propri plug-in per applicare le patch di sicurezza per vulnerabilità. La versione 1.3.9.1 di Easy WP SMTP impedisce l’accesso non autenticato allo script, oltre a limitare i possibili danni ed intrusioni.
Per gli utilizzatori del CMS WordPress: se ritieni che il tuo sito possa essere stato compromesso a causa di questa o di qualsiasi altra vulnerabilità, puoi contattarmi per effettuare un controllo e la pulizia del sito. Altrimenti, poni la tua attenzione ai seguenti indicatori (IOC):
- Traffico registrato dai seguenti IP:
- 185.212.131.45
- 185.212.128.22
- 185.212.131.46
- 86.109.170.200
- Nel Database nella tabella options le chiavi
siteurl
ehome
non avranno valori previsti, e potrebbero essere i seguenti:setforconfigplease[.]com
getmyfreetraffic[.]com
- Account con ruolo di amministratore presenti per utenti sconosciuti. Per esempio:
- devidpentesting99
- larryking99
<script>
Tag dannosi iniettati nella prima riga diindex.php
file. Per esempio:<script type='text/javascript' async src='hXXps://setforspecialdomain[.]com/in2herg42t2?type=in2&frm=scr&'></script>
Come si può evincere da tutto questo, il tempo che intercorre tra la pubblicazione di dettagli sulla vulnerabilità e il primo round di attacchi può essere incredibilmente breve.
Chiunque, potrebbe essere esposto a questo attacco e quindi… aggiornate… aggiornate… aggiornate!
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!