Since I'm able to uncompress the files on my mac I assume these are real zip files and not just something like renamed php files.
Embora você esteja provavelmente nesse caso, sua suposição nem sempre é válida. Um arquivo ZIP permanece válido mesmo que você preencha dados arbitrários, , por isso é bem possível criar um arquivo que é simultaneamente um arquivo ZIP válido contendo dados inocentes e também um script PHP malicioso. Não é nem particularmente difícil; apenas concatene o código PHP e o arquivo ZIP, e certifique-se (por exemplo, usando __halt_compiler()
) que o PHP não tentará analisar os dados do arquivo ZIP anexados.
Esse truque é usado legitimamente para criar arquivos ZIP de extração automática, mas é perfeitamente possível pré-anexar qualquer outro dado oculto ou código executável em um arquivo ZIP da mesma maneira. Alguns programas podem se recusar a abrir esses arquivos ZIP modificados (mas se estiverem, eles estão tecnicamente violando a especificação do formato ZIP), ou eles podem identificar o arquivo como algo diferente de um arquivo ZIP por padrão, mas geralmente, se você arquivo no código que espera um arquivo ZIP, provavelmente será aceito como um.
Um uso mal-intencionado mais comum de tais truques é disfarçar o código de exploração em um contêiner baseado em ZIP (por exemplo, um arquivo JAR) como algo inofensivo (como uma imagem GIF, como em GIFAR exploit), mas não há nenhuma razão para que ele não possa ser usado na outra direção também, por exemplo para ignorar um filtro de upload de arquivo que proíbe o upload de scripts PHP, mas permite arquivos ZIP, sem verificar se o arquivo enviado pode ser ambos ao mesmo tempo.