
Advertência detalhada da CVE-2024-55187 com prova de conceito para uma vulnerabilidade de execução remota de código no phpIpam, explorando envenenamento de caminho e upload de arquivo PHAR para obter controle do servidor.
Parâmetros administrativos sensíveis não são suficientemente sanitizados, permitindo que um atacante envenene caminhos para binários do sistema.
O atacante pode então enviar arquivos CSV perigosos que podem ser tratados como arquivos PHAR contendo metacaracteres de shell que serão avaliados pela chamada exec() do PHP, resultando em execução remota de código.
Crítico - 9.1 - CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
No arquivo functions/classes/class.Scan.php, podemos ver a seguinte estrutura de código:

O primeiro parâmetro da chamada exec() depende diretamente do parâmetro $ping_path, que pode ser modificado livremente a partir do painel de Configurações do Administrador:

A única condição que o atacante deve cumprir é fazer com que a função ping_verify_path não retorne false. A definição deste método é a seguinte:

Este método depende exclusivamente da função nativa do PHP file_exists(). Essa função específica pode suportar a passagem de arquivos ZIP (a extensão .zip não é necessária) e mergulhar na estrutura do arquivo ZIP. Por exemplo:

Portanto, se um atacante conseguir enviar um arquivo ZIP/PHAR válido para o servidor, que contenha um arquivo com um nome contendo metacaracteres de shell, ele irá contornar a verificação file_exists() e fará com que esses metacaracteres sejam avaliados pela chamada exec().
Um atacante autenticado pode enviar arquivos através da funcionalidade "Importação de sub-rede XLS / CSV":

O referido arquivo não precisa ser um arquivo CSV válido. Se a importação falhar, o arquivo não será excluído do servidor. Também sabemos onde ele será armazenado a partir do script import-verify.php:

O atacante tem todos os pré-requisitos para executar um ataque de Execução Remota de Código:
O arquivo malicioso pode ser criado assim:
