Basic Java Deserialization (ObjectInputStream, readObject)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
इस पोस्ट में java.io.Serializable
का उपयोग करते हुए एक उदाहरण समझाया जाएगा।
Java Serializable
इंटरफेस (java.io.Serializable
एक मार्कर इंटरफेस है जिसे आपकी कक्षाओं को लागू करना चाहिए यदि उन्हें serialized और deserialized किया जाना है। Java ऑब्जेक्ट सीरियलाइजेशन (लेखन) ObjectOutputStream के साथ किया जाता है और डेसिरियलाइजेशन (पढ़ना) ObjectInputStream के साथ किया जाता है।
आइए एक कक्षा Person का उदाहरण देखें जो serializable है। यह कक्षा readObject फ़ंक्शन को ओवरराइट करती है, इसलिए जब इस कक्षा का कोई ऑब्जेक्ट deserialized किया जाता है, तो यह फंक्शन कार्यन्वित होगा।
उदाहरण में, कक्षा Person का readObject फंक्शन उसके पालतू जानवर के eat()
फ़ंक्शन को कॉल करता है और कुत्ते का eat()
फ़ंक्शन (किसी कारण से) एक calc.exe को कॉल करता है। हम देखेंगे कि इस कैलकुलेटर को कार्यान्वित करने के लिए एक Person ऑब्जेक्ट को कैसे सीरियलाइज और डेसिरियलाइज किया जाए:
निम्नलिखित उदाहरण https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649 से है
जैसा कि आप इस बहुत बुनियादी उदाहरण में देख सकते हैं, यहाँ "कमजोरी" इस कारण से प्रकट होती है क्योंकि readObject फ़ंक्शन अन्य कमजोर फ़ंक्शनों को कॉल कर रहा है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)