tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
React Native Application Analysis
यह पुष्टि करने के लिए कि एप्लिकेशन React Native फ्रेमवर्क पर बनाया गया था, इन चरणों का पालन करें:
-
APK फ़ाइल का नाम बदलकर zip एक्सटेंशन दें और इसे एक नए फ़ोल्डर में निकालें, कमांड का उपयोग करते हुए
cp com.example.apk example-apk.zip
औरunzip -qq example-apk.zip -d ReactNative
। -
नए बनाए गए ReactNative फ़ोल्डर में जाएं और assets फ़ोल्डर को खोजें। इस फ़ोल्डर के अंदर, आपको फ़ाइल
index.android.bundle
मिलनी चाहिए, जिसमें React JavaScript संकुचित प्रारूप में है। -
JavaScript फ़ाइल खोजने के लिए कमांड का उपयोग करें
find . -print | grep -i ".bundle$"
।
Javascript Code
यदि आप index.android.bundle
की सामग्री की जांच करते हैं और आपको एप्लिकेशन का JavaScript कोड मिलता है (भले ही संकुचित हो), तो आप संवेदनशील जानकारी और कमजोरियों को खोजने के लिए इसका विश्लेषण कर सकते हैं।
चूंकि बंडल वास्तव में एप्लिकेशन का सभी JS कोड शामिल करता है, इसलिए इसे विभिन्न फ़ाइलों में विभाजित करना संभव है (संभावित रूप से इसके रिवर्स इंजीनियरिंग को आसान बनाना) उपकरण react-native-decompiler का उपयोग करके।
Webpack
JavaScript कोड का और विश्लेषण करने के लिए, आप फ़ाइल को https://spaceraccoon.github.io/webpack-exploder/ पर अपलोड कर सकते हैं या इन चरणों का पालन कर सकते हैं:
- उसी निर्देशिका में
index.html
नामक एक फ़ाइल बनाएं जिसमें निम्नलिखित कोड हो:
<script src="./index.android.bundle"></script>
-
Google Chrome में
index.html
फ़ाइल खोलें। -
OS X के लिए Command+Option+J या Windows के लिए Control+Shift+J दबाकर Developer Toolbar खोलें।
-
Developer Toolbar में "Sources" पर क्लिक करें। आपको एक JavaScript फ़ाइल दिखाई देगी जो फ़ोल्डरों और फ़ाइलों में विभाजित है, जो मुख्य बंडल बनाती है।
यदि आपको index.android.bundle.map
नाम की फ़ाइल मिलती है, तो आप स्रोत कोड का विश्लेषण अनमिनिफाइड प्रारूप में कर सकेंगे। मैप फ़ाइलें स्रोत मैपिंग को शामिल करती हैं, जो आपको मिनिफाइड पहचानकर्ताओं को मैप करने की अनुमति देती हैं।
संवेदनशील क्रेडेंशियल्स और एंडपॉइंट्स की खोज करने के लिए, इन चरणों का पालन करें:
-
JavaScript कोड का विश्लेषण करने के लिए संवेदनशील कीवर्ड की पहचान करें। React Native एप्लिकेशन अक्सर Firebase, AWS S3 सेवा एंडपॉइंट्स, निजी कुंजी आदि जैसे थर्ड-पार्टी सेवाओं का उपयोग करते हैं।
-
इस विशेष मामले में, एप्लिकेशन को Dialogflow सेवा का उपयोग करते हुए देखा गया। इसके कॉन्फ़िगरेशन से संबंधित पैटर्न की खोज करें।
-
यह सौभाग्य की बात थी कि पुनः खोज प्रक्रिया के दौरान JavaScript कोड में संवेदनशील हार्ड-कोडेड क्रेडेंशियल्स पाए गए।
JS कोड बदलें और पुनर्निर्माण करें
इस मामले में कोड बदलना आसान है। आपको बस ऐप का नाम बदलकर .zip
एक्सटेंशन का उपयोग करना है और इसे निकालना है। फिर आप इस बंडल के अंदर JS कोड को संशोधित कर सकते हैं और ऐप को पुनर्निर्माण कर सकते हैं। यह आपको कोड इंजेक्ट करने की अनुमति देने के लिए पर्याप्त होना चाहिए ताकि आप परीक्षण उद्देश्यों के लिए ऐप में कोड डाल सकें।
## Hermes बाइटकोड
यदि बंडल में Hermes बाइटकोड है, तो आप ऐप के Javascript कोड तक पहुँच नहीं पाएंगे (यहां तक कि मिनिफाइड संस्करण तक भी नहीं)।
आप निम्नलिखित कमांड चलाकर जांच सकते हैं कि बंडल में Hermes बाइटकोड है या नहीं:
file index.android.bundle
index.android.bundle: Hermes JavaScript bytecode, version 96
हालांकि, आप उपकरणों का उपयोग कर सकते हैं hbctool, hermes-dec या hermes_rs को बाइटकोड को डिस्सेम्बल करने और इसे कुछ प्सेडो JS कोड में डिकंपाइल करने के लिए। ऐसा करने के लिए, उदाहरण के लिए ये कमांड:
hbc-disassembler ./index.android.bundle /tmp/my_output_file.hasm
hbc-decompiler ./index.android.bundle /tmp/my_output_file.js
कोड बदलें और पुनर्निर्माण करें
आदर्श रूप से, आपको असेंबल किए गए कोड को संशोधित करने में सक्षम होना चाहिए (तुलना बदलना, या एक मान या जो भी आपको संशोधित करने की आवश्यकता है) और फिर बाइटकोड को पुनर्निर्माण करना चाहिए और फिर ऐप को पुनर्निर्माण करना चाहिए।
उपकरण hbctool बंडल को असेंबल करने और परिवर्तनों के बाद इसे वापस बनाने का समर्थन करता है, हालाँकि यह केवल पुराने संस्करणों के Hermes बाइटकोड का समर्थन करता है।
उपकरण hermes-dec बाइटकोड को पुनर्निर्माण करने का समर्थन नहीं करता है।
उपकरण hermes_rs बाइटकोड को पुनर्निर्माण करने का समर्थन करता है, लेकिन यह वास्तव में एक पुस्तकालय है और CLI उपकरण नहीं है।
डायनामिक एनालिसिस
आप ऐप का डायनामिक एनालिसिस करने के लिए Frida का उपयोग करके React ऐप के डेवलपर मोड को सक्षम करने और react-native-debugger
का उपयोग करके इससे जुड़ने की कोशिश कर सकते हैं। हालाँकि, इसके लिए आपको ऐप का स्रोत कोड चाहिए। आप इसके बारे में अधिक जानकारी https://newsroom.bedefended.com/hooking-react-native-applications-with-frida/ पर पा सकते हैं।
संदर्भ
- https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7
- https://www.assetnote.io/resources/research/expanding-the-attack-surface-react-native-android-applications
- https://payatu.com/wp-content/uploads/2023/02/Mastering-React-Native-Application-Pentesting-A-Practical-Guide-2.pdf
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।