
Los parámetros administrativos sensibles no están suficientemente saneados, lo que permite a un atacante envenenar rutas a binarios del sistema.
El atacante puede entonces subir archivos CSV peligrosos que pueden ser tratados como archivos PHAR que contienen metacaracteres de shell que serán evaluados por la llamada exec() de PHP, lo que resulta en ejecución remota de código.
Crítico - 9.1 - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
En el archivo functions/classes/class.Scan.php, podemos ver la siguiente estructura de código:

El primer parámetro de la llamada exec() depende directamente del parámetro $ping_path, que puede modificarse libremente desde el panel de Ajustes de Administrador:

La única condición que el atacante debe cumplir es hacer que la función ping_verify_path no devuelva falso. La definición de este método es la siguiente:

Este método se basa únicamente en la función nativa de PHP file_exists(). Esta función en particular puede admitir el paso de archivos ZIP (la extensión .zip no es necesaria) y adentrarse en la estructura del archivo ZIP. Por ejemplo:

Por lo tanto, si un atacante puede subir un archivo ZIP/PHAR válido al servidor, que contenga un archivo con un nombre que incluya metacaracteres de shell, eludirá la comprobación file_exists() y logrará que esos metacaracteres sean evaluados por la llamada exec().
Un atacante autenticado puede subir archivos a través de la funcionalidad "importación de subred XLS / CSV":

Dicho archivo no tiene por qué ser un archivo CSV válido. Si la importación falla, el archivo no se eliminará del servidor. También sabemos dónde se almacenará a partir del script import-verify.php:

El atacante tiene todos los requisitos previos para ejecutar un ataque de Ejecución Remota de Código :
El archivo malicioso se puede crear de la siguiente manera:

https://www.youtube.com/watch?v=oMvyfFrlRAs