← voltar
CVE-2020-25213criticalsob ataqueCWE-434

CVE-2020-25213

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 10epss 97%
da publicação à arma31 dias
Publicada no NVD9 de set.
1ª PoC+31d
metasploit9 de set.
CISA KEV+420d
probabilidade de exploração
97%top 1% das CVEs
exploração observada
simCISA + VulnCheck
21 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-05-03

Apply updates per vendor instructions.

Resumo

O plugin File Manager (wp-file-manager) para WordPress, com mais de 700 mil instalações ativas, distribuía um arquivo de exemplo do framework elFinder renomeado para .php dentro de sua própria pasta de plugin, expondo um conector que processa comandos do elFinder sem autenticação. Isso permite que qualquer visitante anônimo do site envie ou grave arquivos PHP no servidor, resultando em execução remota de código completa. A falha foi explorada em massa por botnets antes mesmo de o fornecedor lançar a correção, o que a coloca no catálogo KEV da CISA.

Detalhamento técnico

O elFinder é um framework de gerenciador de arquivos web usado como dependência pelo wp-file-manager. Ele distribui, como parte de seu pacote de exemplos, um arquivo `connector.minimal.php` que instancia `elFinderConnector` e chama `$connector->run()` sem qualquer camada de autenticação — esse arquivo é documentado no projeto elFinder como exemplo de referência, não para uso em produção. O wp-file-manager simplesmente copiava esse arquivo para `lib/php/connector.minimal.php` dentro da própria estrutura do plugin, tornando-o acessível via HTTP a qualquer usuário, autenticado ou não.

Dentro de `run()`, o código lê `$_GET`/`$_POST` (ou o corpo bruto da requisição, para contornar limites de `max_input_vars`) e monta o array `$src`, do qual extrai `$src['cmd']` e passa como argumento para `elFinder::exec()`, definido em `lib/php/elFinder.class.php`. Esse método aceita uma lista fixa de comandos legítimos do protocolo elFinder — entre eles `upload`, `mkfile` e `put` — desde que o atacante forneça os parâmetros de 'volume alvo' esperados por cada comando.

O problema de fundo é CWE-434 (upload irrestrito de arquivo com tipo perigoso, segundo classificação da CISA): não há validação de que o volume de destino ou a extensão do arquivo gravado seja segura para execução PHP. O atacante controla o conteúdo do arquivo (via `upload` multipart ou via `mkfile`+`put` para escrever conteúdo arbitrário em um arquivo novo) e o nome/extensão do arquivo resultante, permitindo depositar um webshell diretamente em `wp-content/plugins/wp-file-manager/lib/files/`, pasta que fica dentro da document root do WordPress e é servida diretamente pelo Apache/PHP-FPM.

Como é explorada

O vetor é uma requisição HTTP (GET ou POST) não autenticada diretamente ao endpoint `wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php`, presente em qualquer instalação do plugin nas versões vulneráveis, sem necessidade de login, permissão especial ou configuração não padrão — basta o plugin estar instalado e ativo. Não há complexidade de exploração relevante: o comando elFinder `upload` (envio multipart de arquivo) ou a combinação `mkfile`+`put` (criação de arquivo seguida de gravação de conteúdo) bastam para depositar um arquivo PHP dentro de `lib/files/`, que em seguida é acessado via outra requisição HTTP para disparar a execução.

A exploração massiva ocorreu em agosto e setembro de 2020, antes da publicação da correção 6.9: pesquisadores da Seravo detectaram tráfego automatizado (user-agent `python-requests`) fazendo POST ao conector minimal em sites comprometidos, indicando varredura e exploração por botnet em escala, não ataques direcionados. Um PoC público em Python (repositório w4fz5uck5/wp-file-manager-0day) automatiza esse envio, e a vulnerabilidade tem módulo Metasploit e template Nuclei, o que a torna trivial de varrer e explorar mesmo por atacantes com pouca sofisticação.

O resultado final é execução arbitrária de código PHP no contexto do processo web, equivalente a comprometimento total do site — leitura/escrita de qualquer arquivo acessível ao usuário do webserver, acesso ao banco de dados via `wp-config.php`, e possibilidade de usar o site como pivô para novos ataques. É esse cenário — RCE não autenticado e trivial — que justifica o CVSS 10.0.

Versões

Afetadas
wp-file-manager (File Manager) para WordPress em versões anteriores à 6.9 — segundo a Seravo, tanto a edição gratuita quanto a Pro estavam afetadas.
Corrigidas em
Versão 6.9, lançada em setembro de 2020.

Como se proteger

A correção do fornecedor é a versão 6.9 do wp-file-manager, lançada no mesmo dia em que a Seravo reportou a falha (início de setembro de 2020); essa versão remove ou neutraliza o conector de exemplo do elFinder exposto publicamente. Atualizar para 6.9 ou posterior resolve o problema — segundo a Seravo, tanto a versão free quanto a Pro do plugin estavam afetadas.

Se a atualização imediata não for possível, o paliativo eficaz é remover manualmente o plugin do servidor (excluir os arquivos, não apenas desativá-lo pelo painel do WordPress) — a Seravo enfatiza explicitamente que desativar o plugin pela interface administrativa NÃO bloqueia o acesso direto ao arquivo `connector.minimal.php` via HTTP, já que o arquivo permanece no disco e é servido independentemente do estado 'ativo/inativo' do plugin no banco de dados. Bloquear via WAF ou regra de servidor o acesso direto a `wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php` funciona como mitigação de rede enquanto a atualização não é aplicada, mas deve ser tratado como paliativo temporário, não substituto da correção.

Como o KEV da CISA lista esta CVE com exploração confirmada, qualquer instalação com versão anterior à 6.9 deve ser tratada como potencialmente já comprometida — recomenda-se, além de atualizar, buscar webshells já depositados em `lib/files/` e revisar logs de acesso ao conector antes de considerar o incidente encerrado.

Como detectar

O indicador mais direto é requisição HTTP (GET/POST) diretamente ao caminho `wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php` (ou variantes como `connector.php`) partindo de IPs externos sem sessão autenticada de administrador — a Seravo observou em ambiente comprometido POSTs a esse endpoint com user-agent `python-requests/2.24.0`, típico de scripts automatizados, embora o user-agent seja trivialmente falsificável e não deva ser usado como assinatura confiável isoladamente. Outro sinal é a presença de arquivos PHP inesperados dentro de `wp-content/plugins/wp-file-manager/lib/files/`, diretório que normalmente armazena apenas os arquivos gerenciados pelo usuário do File Manager, não scripts executáveis.

Como há PoC público, módulo Metasploit e template Nuclei disponíveis, o tráfego de exploração pode variar significativamente em assinatura (parâmetros `cmd=upload`, `cmd=mkfile`, `cmd=put` no corpo da requisição), e não existe um único padrão de log garantido — organizações devem inspecionar todo acesso ao connector do File Manager anterior à atualização como potencialmente malicioso, dado o histórico de exploração automatizada em massa.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
The File Manager (wp-file-manager) plugin before 6.9 for WordPress allows remote attackers to upload and execute arbitrary PHP code because it renames an unsafe example elFinder connector file to have the .php extension. This, for example, allows attackers to run the elFinder upload (or mkfile and put) command to write PHP code into the wp-content/plugins/wp-file-manager/lib/files/ directory. This was exploited in the wild in August and September 2020.
CVSS:3.1/AC:L/AV:N/A:H/C:H/I:H/PR:N/S:C/UI:N
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.