
CVE-2025-9345
Tipo di vulnerabilità: Path Traversal (Download arbitrario di file)
Funzione interessata: ajax_downloadfile()
Impatto: Gli utenti autenticati con privilegi bassi (Subscriber+) possono scaricare file arbitrari dal server, inclusi file di configurazione sensibili, sfruttando una validazione insufficiente del parametro flm_file.
Punteggio CVSS v3.1: 6.5 (Medio) Vector: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Il parametro flm_file della richiesta GET viene concatenato direttamente con il percorso della directory di backup senza una sufficiente sanificazione. L'attuale funzione di sanificazione Flmbkp_Form_Helper::sanitizeInput_html() non previene sequenze come ../, consentendo a un attaccante di attraversare le directory al di fuori della cartella di backup prevista.
// modules\filemanager\controllers\backups.php
public function ajax_downloadfile()
{
check_ajax_referer('flmbkp_ajax_nonce', 'flmbkp_security');
@set_time_limit(900);
$flm_file = (isset($_GET['flm_file'])) ? Flmbkp_Form_Helper::sanitizeInput_html($_GET['flm_file']) : '';
$backup_directory=Flmbkp_Form_Helper::backup_directory();
$fullpath = $backup_directory.'/'.$flm_file;
header("Content-Length: ".filesize($fullpath));
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".basename($fullpath)."\";");
readfile($fullpath);
exit;
}




flm_file per includere un payload di path traversal mirato a un file sensibile.
Divulgazione di file di sistema sensibili.
Esposizione di credenziali memorizzate in file come wp-config.php, .env o log dell'applicazione.
Facilita ulteriori attacchi, inclusa la compromissione totale del sistema.
Usa realpath() per risolvere il percorso assoluto del file richiesto e assicurati che sia all'interno della directory di backup.
Rifiuta le richieste contenenti ../, %00 o altre sequenze relative al path traversal prima dell'accesso al file.
Applica controlli rigorosi delle capacità (ad esempio, solo gli utenti con manage_options possono scaricare i backup).
Sanifica e valida il nome del file rispetto a una whitelist di file consentiti.
Se non riesci a riprodurre il problema esattamente come descritto nel rapporto, consulta la seguente dimostrazione video (PoC) per uno scenario di riproduzione chiaro: