Duplicator è un plugin molto utile per quegli utenti che vogliano migrare/copiare isiti WordPress. Con Duplicator, gli amministratori possono creare una nuova copia del sito ed il file di backup generato può essere scaricato dalla dashobard di WP.
La vulnerabilità Zero-Day del plugin Duplicator.
Lo sfruttamento della vulnerabilità zero-day scoperta consente agli hacker di scaricare arbitrariamente file dai siti target. Più di 1 milione di siti web WordPress sono affetti da questo problema di sicurezza.
Quando un utente crea una copia di un sito WP e fa clic sul pulsante “Download”, viene chiamato l’handler AJAX di WordPress con l’azione duplicator_download
ed il parametro file
.
Sfortunatamente l’azione duplicator_download
era registrata attraverso wp_ajax_nopriv_
ed era quindi accessibile ad utenti non autenticati. A peggiorare le cose, non era prevista una validazione volta a limitare i percorsi da cui era possibile scaricare i file.
Il parametro
WordFencefile
è passato attraversosanitize_text_field
e aggiunto alla costante del pluginDUPLICATOR_SSDIR_PATH
, tuttavia era ancora possibile un attacco di tipo “Directory Traversal“. Un attaccante potrebbe accedere a file esterni alla cartella di Duplicator, inviando valori come ../../../file.php per navigare attraverso la struttura delle cartelle del server.
function
duplicator_init() {
if
(isset($_GET['action']) && $_GET['action'] == 'duplicator_download') {
$file
= sanitize_text_field($_GET['file']);
$filepath
= DUPLICATOR_SSDIR_PATH.'/'.$file;
// Process download
if(file_exists($filepath)) {
// Clean output buffer
if
(ob_get_level() !== 0 && @ob_end_clean() === FALSE) {
@ob_clean();
}
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '
. filesize($filepath));
flush(); // Flush system output buffer
try
{
$fp
= @fopen($filepath, 'r');
if
(false === $fp) {
throw
new
Exception('Fail to open the file '.$filepath);
}
while
(!feof($fp) && ($data
= fread($fp, DUPLICATOR_BUFFER_READ_WRITE_SIZE)) !== FALSE) {
echo
$data;
}
@fclose($fp);
} catch
(Exception $e) {
readfile($filepath);
}
exit;
} else
{
wp_die('Invalid installer file name!!');
}
}
}
add_action('init', 'duplicator_init');
Quali sono i segni di avvenuto sfruttamento di questa vulnerabilità?
Il ritrovamento delle seguenti stringhe in una richiesta GET indica che, molto probabilmente, il sito è stato oggetto di attenzione da parte degli hacker.
- action=duplicator_download
- file=/../wp-config.php
Se il tuo sito è su Host, è al sicuro
Se il tuo sito è su Host.it non hai nulla da temere, infatti tutti i nostri nuovi profili di hosting condiviso (Host Agile, Smart, Genius, 4.0 e 5.0) e di cloud hosting (Host Cloud) sono protetti da Cerbero un sofisticato sistema di protezione che include un innovativo Web Application Firewall.
Le definizioni di Cerbero sono state aggiornate immediatamente per prevenire e bloccare gli attacchi tesi a sfruttare la vulnerabilità di Duplicator su WordPress.