phar:// deserialization
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
Phar फ़ाइलें (PHP Archive) फ़ाइलें serialized format में मेटा डेटा रखती हैं, इसलिए, जब इसे पार्स किया जाता है, तो यह metadata deserialized हो जाता है और आप PHP कोड के अंदर एक deserialization भेद्यता का दुरुपयोग करने की कोशिश कर सकते हैं।
इस विशेषता की सबसे अच्छी बात यह है कि यह deserialization तब भी होगी जब PHP फ़ंक्शन का उपयोग किया जाए जो PHP कोड को eval नहीं करते जैसे file_get_contents(), fopen(), file() या file_exists(), md5_file(), filemtime() या filesize()।
तो, एक स्थिति की कल्पना करें जहां आप एक PHP वेब को एक मनमाने फ़ाइल का आकार प्राप्त करने के लिए phar://
प्रोटोकॉल का उपयोग कर सकते हैं, और कोड के अंदर आपको एक class मिलती है जो निम्नलिखित के समान है:
आप एक phar फ़ाइल बना सकते हैं जो लोड होने पर इस क्लास का दुरुपयोग करके मनमाने कमांड चलाएगी, जैसे:
ध्यान दें कि JPG के जादुई बाइट्स (\xff\xd8\xff
) को phar फ़ाइल की शुरुआत में जोड़ा गया है ताकि संभावित फ़ाइल अपलोड प्रतिबंधों को बायपास किया जा सके।
test.phar
फ़ाइल को संकलित करें:
और कमजोर कोड का दुरुपयोग करते हुए whoami
कमांड चलाएँ:
References
बग बाउंटी टिप: साइन अप करें Intigriti के लिए, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है! आज ही https://go.intigriti.com/hacktricks पर हमारे साथ जुड़ें, और $100,000 तक की बाउंटी कमाना शुरू करें!
Last updated