phar:// deserialization
Dica de recompensa por bugs: inscreva-se no Intigriti, uma plataforma de recompensas por bugs premium criada por hackers, para hackers! Junte-se a nós em https://go.intigriti.com/hacktricks hoje e comece a ganhar recompensas de até $100.000!
Os arquivos Phar (PHP Archive) contêm metadados em formato serializado, então, ao serem analisados, esses metadados são desserializados e você pode tentar abusar de uma vulnerabilidade de desserialização dentro do código PHP.
A melhor coisa sobre essa característica é que essa desserialização ocorrerá mesmo usando funções PHP que não avaliam código PHP como file_get_contents(), fopen(), file() ou file_exists(), md5_file(), filemtime() ou filesize().
Portanto, imagine uma situação em que você pode fazer um site PHP obter o tamanho de um arquivo arbitrário usando o protocolo phar://
, e dentro do código você encontra uma classe semelhante à seguinte:
Você pode criar um arquivo phar que, quando carregado, abusará dessa classe para executar comandos arbitrários com algo como:
Observe como os bytes mágicos do JPG (\xff\xd8\xff
) são adicionados no início do arquivo phar para burlar possíveis restrições de upload de arquivos.
Compile o arquivo test.phar
com:
E execute o comando whoami
abusando do código vulnerável com:
Referências
Dica de recompensa por bugs: cadastre-se no Intigriti, uma plataforma premium de bug bounty criada por hackers, para hackers! Junte-se a nós em https://go.intigriti.com/hacktricks hoje e comece a ganhar recompensas de até $100,000!
Last updated