phar:// deserialization
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: regístrate en Intigriti, una plataforma de recompensas por errores premium creada por hackers, para hackers! Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000!
Los archivos Phar (PHP Archive) contienen metadatos en formato serializado, así que, cuando se analizan, estos metadatos son deserializados y puedes intentar abusar de una vulnerabilidad de deserialización dentro del código PHP.
Lo mejor de esta característica es que esta deserialización ocurrirá incluso utilizando funciones de PHP que no evalúan código PHP como file_get_contents(), fopen(), file() o file_exists(), md5_file(), filemtime() o filesize().
Así que, imagina una situación en la que puedes hacer que una web PHP obtenga el tamaño de un archivo arbitrario usando el protocolo phar://
, y dentro del código encuentras una clase similar a la siguiente:
Puedes crear un archivo phar que, al ser cargado, abusará de esta clase para ejecutar comandos arbitrarios con algo como:
Nota cómo los bytes mágicos de JPG (\xff\xd8\xff
) se añaden al principio del archivo phar para eludir posibles restricciones de subida de archivos.
Compila el archivo test.phar
con:
Y ejecutar el comando whoami
abusando del código vulnerable con:
Consejo de bug bounty: regístrate en Intigriti, una plataforma de bug bounty premium creada por hackers, para hackers! Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000!
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)