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
एक मार्कर इंटरफेस है जिसे आपकी कक्षाओं को लागू करना चाहिए यदि उन्हें सीरियलाइज और डेसिरियलाइज किया जाना है। Java ऑब्जेक्ट सीरियलाइजेशन (लेखन) ObjectOutputStream के साथ किया जाता है और डेसिरियलाइजेशन (पढ़ना) ObjectInputStream के साथ किया जाता है।
आइए एक क्लास Person का उदाहरण देखें जो सीरियलाइजेबल है। यह क्लास readObject फ़ंक्शन को ओवरराइट करती है, इसलिए जब इस क्लास का कोई ऑब्जेक्ट डेसिरियलाइज किया जाता है, तो यह फंक्शन एक्ज़ीक्यूट होगा।
उदाहरण में, क्लास 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)