phar:// deserialization
Last updated
Last updated
Astuce de prime de bug : inscrivez-vous à Intigriti, une plateforme de prime de bug premium créée par des pirates informatiques, pour des pirates informatiques ! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des primes allant jusqu'à 100 000 $ !
Les fichiers Phar (PHP Archive) contiennent des métadonnées au format sérialisé, donc, lorsqu'elles sont analysées, ces métadonnées sont désérialisées et vous pouvez essayer d'exploiter une vulnérabilité de désérialisation dans le code PHP.
La meilleure chose à propos de cette caractéristique est que cette désérialisation se produira même en utilisant des fonctions PHP qui n'évaluent pas le code PHP comme file_get_contents(), fopen(), file() ou file_exists(), md5_file(), filemtime() ou filesize().
Imaginez donc une situation où vous pouvez faire en sorte qu'un site web PHP obtienne la taille d'un fichier arbitraire en utilisant le protocole phar://
, et à l'intérieur du code, vous trouvez une classe similaire à celle-ci :
Vous pouvez créer un fichier phar qui, lorsqu'il est chargé, exploitera cette classe pour exécuter des commandes arbitraires avec quelque chose comme :
Notez comment les octets magiques de JPG (\xff\xd8\xff
) sont ajoutés au début du fichier phar pour contourner les éventuelles restrictions de téléchargement de fichiers.
Compilez le fichier test.phar
avec :
Et exécutez la commande whoami
en abusant du code vulnérable avec :
Conseil bug bounty: inscrivez-vous sur Intigriti, une plateforme premium de bug bounty créée par des hackers, pour des hackers! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des primes allant jusqu'à 100 000 $!