
Prueba de concepto del exploit para CVE-2026-1357, una subida arbitraria de archivos sin autenticación en el plugin WPvivid Backup & Migration para WordPress, que permite la ejecución remota de código.
El plugin para WordPress Migration, Backup, Staging – WPvivid Backup & Migration es vulnerable a la Subida Arbitraria de Archivos sin Autenticación en versiones hasta la 0.9.123 inclusive. Esto se debe a un manejo inadecuado de errores en el proceso de descifrado RSA combinado con una falta de saneamiento de rutas al escribir archivos subidos. Cuando el plugin no logra descifrar una clave de sesión usando openssl_private_decrypt(), no termina la ejecución y en su lugar pasa el valor booleano false a la inicialización del cifrado AES de la librería phpseclib. La librería trata este valor false como una cadena de bytes nulos, permitiendo a un atacante cifrar una carga maliciosa usando una clave predecible de bytes nulos. Además, el plugin acepta nombres de archivo de la carga descifrada sin saneamiento, lo que permite el directory traversal para escapar del directorio de respaldo protegido. Esto hace posible que atacantes no autenticados suban archivos PHP arbitrarios a directorios de acceso público y logren Ejecución Remota de Código a través del parámetro wpvivid_action=send_to_site.
https://nvd.nist.gov/vuln/detail/CVE-2026-1357
Organiza la carpeta de tu proyecto de la siguiente manera:
.
├── docker-compose.yml
├── exploit.py
├── requirements.txt
├── vulnerable-plugin-folder/ # Área de preparación para el plugin
└── wp-content/ # Datos persistentes de WP (Creado por Docker)
Dado que la vulnerabilidad fue parcheada en versiones posteriores, debes descargar y preparar manualmente la versión 0.9.123. Ejecuta estos comandos desde la raíz de tu proyecto:
# Descargar la versión vulnerable
wget https://downloads.wordpress.org/plugin/wpvivid-backuprestore.0.9.123.zip
# Crear el directorio de preparación
mkdir vulnerable-plugin-folder
# Extraer y mover los archivos a su lugar
unzip wpvivid-backuprestore.0.9.123.zip
mv wpvivid-backuprestore/* vulnerable-plugin-folder/
rm -rf wpvivid-backuprestore wpvivid-backuprestore.0.9.123.zip
docker-compose up -d
http://localhost:8080 y completa la instalación./wp-admin).pip install -r requirements.txt
Ejecuta el script contra tu objetivo de laboratorio:
python3 exploit.py localhost:8080 --command "id"
Si tiene éxito, el script mostrará los resultados del comando (por ejemplo, uid=33(www-data) gid=33(www-data)). También puedes verificar la existencia del shell en tu laboratorio:
docker exec wpvivid-lab ls /var/www/html/wp-content/uploads/
Esta herramienta es solo para fines educativos e investigación de seguridad autorizada. El acceso no autorizado a sistemas informáticos es ilegal.