<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS और HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें** द्वारा **PR जमा करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपो में।
हम एक स्थिति में हैं जहाँ हमने एक **वेब ऐप में PHP डीसीरियलाइजेशन** पाया है जिसमें **`phpggc`** के अंदर कोई गैजेट वलनरेबल लाइब्रेरी नहीं है। हालांकि, उसी कंटेनर में एक **वलनरेबल लाइब्रेरी के साथ अलग कंपोजर वेब ऐप** था। इसलिए, लक्ष्य था कि **दूसरे वेब ऐप के कंपोजर लोडर को लोड करें** और इसका दुरुपयोग करें ताकि **उस लाइब्रेरी को एक गैजेट के साथ उत्पीड़ित करें** जो डीसीरियलाइजेशन के लिए वलनरेबल वेब ऐप से है।
* आपने एक **डीसीरियलाइजेशन** पाया है और वर्तमान ऐप कोड में कोई **गैजेट नहीं** है
* आप निम्नलिखित तरह का **`spl_autoload_register`** फ़ंक्शन दुरुपयोग कर सकते हैं ताकि **`.php` एक्सटेंशन वाली किसी भी स्थानीय फ़ाइल को लोड** करें
* इसके लिए आप एक डीसीरियलाइजेशन का दुरुपयोग करते हैं जिसमें क्लास का नाम **`$name`** के अंदर होगा। आप **"/" या "."** का उपयोग एक सीरीयलाइज्ड ऑब्जेक्ट में क्लास नाम में नहीं कर सकते हैं, लेकिन **कोड** ने **अंडरस्कोर** ("\_") को **स्लैश** ("/") में **बदल दिया है**। इसलिए, एक क्लास नाम जैसे `tmp_passwd` को `/tmp/passwd.php` में बदल दिया जाएगा और कोड इसे लोड करने की कोशिश करेगा।\
यदि आपके पास एक **फ़ाइल अपलोड** है और आप एक फ़ाइल अपलोड कर सकते हैं जिसमें **`.php` एक्सटेंशन** है, तो आप इस कार्यक्षमता का सीधा दुरुपयोग कर सकते हैं और पहले से ही RCE प्राप्त कर सकते हैं।
* इस दूसरी लाइब्रेरी को लोड करने के लिए, पहले आपको **उस दूसरे वेब ऐप के कॉम्पोज़र लोडर को लोड करना होगा** (क्योंकि मौजूदा एप्लिकेशन का वन अन्य की लाइब्रेरी तक पहुंच नहीं होगा)। **एप्लिकेशन के पथ को जानते हुए**, आप इसे बहुत आसानी से प्राप्त कर सकते हैं: **`O:28:"www_frontend_vendor_autoload":0:{}`** (मेरे मामले में, कॉम्पोज़र लोडर `/www/frontend/vendor/autoload.php` में था)
* अब, आप **अन्य ऐप कॉम्पोज़र लोडर** को **लोड** कर सकते हैं, तो अब समय है **`phpggc`** **पेलोड** उपयोग करने के लिए। मेरे मामले में, मैंने **`Guzzle/FW1`** का उपयोग किया, जिसने मुझे **फ़ाइल सिस्टम के अंदर कोई भी फ़ाइल लिखने** की अनुमति दी।
* ध्यान दें: **उत्पन्न गैजेट काम नहीं कर रहा था**, इसे काम करने के लिए मैंने उस पेलोड **`chain.php`** को संशोधित किया और सभी विशेषताएँ क्लासों की **निजी से सार्वजनिक** में सेट की। अगर नहीं, स्ट्रिंग को डिसीरियलाइज़ करने के बाद, बनाए गए ऑब्जेक्ट्स की विशेषताएँ कोई मान नहीं रखती थीं।
* अब हमारे पास तरीका है **अन्य ऐप कॉम्पोज़र लोडर** को लोड करने का और एक **काम करने वाला phpggc पेलोड** है, लेकिन हमें **इसे इसी अनुरोध में करने की आवश्यकता है ताकि गैजेट का उपयोग किया जाए जब लोडर लोड हो**। उसके लिए, मैंने एक सीरीयलाइज़ एरे भेजा जिसमें दोनों ऑब्जेक्ट्स थे:
* आप **पहले लोडर को लोड होते देख सकते हैं और फिर पेलोड**
* अब, हम **एक फ़ाइल बना सकते हैं और लिख सकते हैं**, हालांकि, उपयोगकर्ता **वेब सर्वर के अंदर किसी भी फ़ोल्डर में लिख नहीं सकता था**। इसलिए, जैसा कि आप पेलोड में देख सकते हैं, PHP **`system`** को कुछ **base64** के साथ बनाया गया है **`/tmp/a.php`** में। फिर, हम **दूसरे वेबऐप के कॉम्पोज़र लोडर को लोड करने के लिए पहले प्रकार के पेलोड को पुनः प्रयोग कर सकते हैं** जिसे हमने LFI के रूप में उपयोग किया था **`/tmp/a.php`** फ़ाइल को लोड करने के लिए। इसे डेसीरियलाइज़ेशन गैजेट में जोड़ें: 
* **एक अलग वेबऐप के कंटेनर में कॉम्पोजर ऑटोलोड** लोड करें
* **फिलहाल वेबऐप के लाइब्रेरी का दुरुपयोग करने के लिए एक फीजी साधन लोड** करें (जिस पर डेसीरियलाइजेशन के लिए विकल्प वेबऐप में कोई गैजेट नहीं था)
* फीजी **एक फ़ाइल बनाएगा जिसमें PHP पेलोड** होगा जिसमें दुराचारी कमांड होंगे (/tmp/a.php में) (वेबऐप उपयोगकर्ता किसी भी वेबऐप के किसी भी फ़ोल्डर में लिख नहीं सकता)
* हमारे पेलोड का अंतिम हिस्सा **उस उत्पन्न PHP फ़ाइल को लोड करेगा** जो कमांड निष्पादित करेगा
मुझे **इस डेसीरियलाइजेशन को दो बार कॉल करने की आवश्यकता** थी। मेरे परीक्षण में, पहली बार `/tmp/a.php` फ़ाइल बनाई गई थी लेकिन लोड नहीं हुई, और दूसरी बार यह सही ढंग से लोड हुई।
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!