Cordova Apps

Reading time: 9 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

अधिक जानकारी के लिए देखें https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58. यह एक संक्षेप है:

Apache Cordova को हाइब्रिड एप्लिकेशन के विकास के लिए JavaScript, HTML, और CSS का उपयोग करने के लिए जाना जाता है। यह Android और iOS एप्लिकेशन बनाने की अनुमति देता है; हालाँकि, इसमें एप्लिकेशन के स्रोत कोड को सुरक्षित करने के लिए कोई डिफ़ॉल्ट तंत्र नहीं है। React Native के विपरीत, Cordova डिफ़ॉल्ट रूप से स्रोत कोड को संकलित नहीं करता है, जो कोड छेड़छाड़ की कमजोरियों का कारण बन सकता है। Cordova एप्लिकेशन को रेंडर करने के लिए WebView का उपयोग करता है, जो HTML और JavaScript कोड को APK या IPA फ़ाइलों में संकलित करने के बाद भी उजागर करता है। दूसरी ओर, React Native JavaScript कोड को निष्पादित करने के लिए एक JavaScript VM का उपयोग करता है, जो बेहतर स्रोत कोड सुरक्षा प्रदान करता है।

Cloning a Cordova Application

Cordova एप्लिकेशन को क्लोन करने से पहले, सुनिश्चित करें कि NodeJS अन्य पूर्वापेक्षाओं जैसे Android SDK, Java JDK, और Gradle के साथ स्थापित है। आधिकारिक Cordova documentation इन इंस्टॉलेशन के लिए एक व्यापक गाइड प्रदान करता है।

एक उदाहरण एप्लिकेशन पर विचार करें जिसका नाम Bank.apk है और पैकेज नाम com.android.bank है। स्रोत कोड तक पहुँचने के लिए, bank.apk को अनज़िप करें और bank/assets/www फ़ोल्डर में जाएँ। इस फ़ोल्डर में एप्लिकेशन का पूरा स्रोत कोड है, जिसमें HTML और JS फ़ाइलें शामिल हैं। एप्लिकेशन की कॉन्फ़िगरेशन bank/res/xml/config.xml में पाई जा सकती है।

एप्लिकेशन को क्लोन करने के लिए, इन चरणों का पालन करें:

bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new

bank/assets/www की सामग्री को bank-new/www में कॉपी करें, cordova_plugins.js, cordova.js, cordova-js-src/, और plugins/ निर्देशिका को छोड़कर।

नया Cordova प्रोजेक्ट बनाते समय प्लेटफ़ॉर्म (Android या iOS) निर्दिष्ट करें। Android ऐप को क्लोन करते समय, Android प्लेटफ़ॉर्म जोड़ें। ध्यान दें कि Cordova के प्लेटफ़ॉर्म संस्करण और Android API स्तर अलग हैं। प्लेटफ़ॉर्म संस्करणों और समर्थित Android APIs के विवरण के लिए Cordova documentation देखें।

उचित Cordova Android प्लेटफ़ॉर्म संस्करण निर्धारित करने के लिए, मूल एप्लिकेशन के cordova.js फ़ाइल में PLATFORM_VERSION_BUILD_LABEL की जांच करें।

प्लेटफ़ॉर्म सेट करने के बाद, आवश्यक प्लगइन्स स्थापित करें। मूल एप्लिकेशन के bank/assets/www/cordova_plugins.js फ़ाइल में सभी प्लगइन्स और उनके संस्करणों की सूची है। प्रत्येक प्लगइन को नीचे दिखाए अनुसार व्यक्तिगत रूप से स्थापित करें:

bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1

यदि कोई प्लगइन npm पर उपलब्ध नहीं है, तो इसे GitHub से प्राप्त किया जा सकता है:

bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git

सुनिश्चित करें कि संकलन से पहले सभी पूर्वापेक्षाएँ पूरी हों:

bash
cd bank-new
cordova requirements

APK बनाने के लिए, निम्नलिखित कमांड का उपयोग करें:

bash
cd bank-new
cordova build android — packageType=apk

यह कमांड एक APK उत्पन्न करता है जिसमें डिबग विकल्प सक्षम होता है, जो Google Chrome के माध्यम से डिबगिंग को सुविधाजनक बनाता है। स्थापना से पहले APK पर हस्ताक्षर करना महत्वपूर्ण है, विशेष रूप से यदि एप्लिकेशन में कोड छेड़छाड़ पहचान तंत्र शामिल हैं।

ऑटोमेशन टूल

जो लोग क्लोनिंग प्रक्रिया को स्वचालित करना चाहते हैं, उनके लिए MobSecco एक अनुशंसित उपकरण है। यह Android एप्लिकेशनों के क्लोनिंग को सरल बनाता है, ऊपर बताए गए चरणों को आसान बनाता है।


सुरक्षा जोखिम और हाल की कमजोरियाँ (2023-2025)

Cordova की प्लगइन-आधारित आर्किटेक्चर का मतलब है कि हमले की अधिकांश सतह तीसरे पक्ष के प्लगइनों और WebView ब्रिज के अंदर होती है। पिछले कुछ वर्षों में निम्नलिखित मुद्दों का सक्रिय रूप से शोषण किया गया है या सार्वजनिक रूप से प्रकट किया गया है:

  • दुष्ट NPM पैकेज। जुलाई 2024 में cordova-plugin-acuant पैकेज को NPM रजिस्ट्री से हटा दिया गया था जब यह पता चला कि यह स्थापना के दौरान दुष्ट कोड छोड़ रहा था (OSV-ID MAL-2024-7845)। कोई भी डेवलपर मशीन जिसने npm install cordova-plugin-acuant चलाया है, उसे समझौता किया हुआ माना जाना चाहिए। अप्रत्याशित Cordova प्लगइनों के लिए package.json/package-lock.json का ऑडिट करें और विश्वसनीय संस्करणों को पिन करें। OSV advisory
  • अमान्य डीपलिंक्स → XSS/RCE। CleverTap Cordova Plugin ≤ 2.6.2 (CVE-2023-2507) डीपलिंक इनपुट को साफ करने में विफल रहता है, जिससे एक हमलावर को मनमाने JavaScript को इंजेक्ट करने की अनुमति मिलती है जो एक तैयार लिंक खोले जाने पर मुख्य WebView संदर्भ में निष्पादित होता है। ≥ 2.6.3 पर अपडेट करें या रनटाइम में अविश्वसनीय URI पैरामीटर को हटा दें। CVE-2023-2507
  • पुराना प्लेटफ़ॉर्म कोड। cordova-android ≤ 12 लक्ष्यSdk 33 या उससे कम के साथ शिप करता है। मई 2024 से Google Play API 34 की आवश्यकता है, और कई WebView हार्डनिंग सुविधाएँ (जैसे, घटकों के लिए स्वचालित रूप से उत्पन्न exported="false") केवल API 34+ में मौजूद हैं। cordova-android@13.0.0 या बाद में अपग्रेड करें।

पेंटेस्ट के दौरान त्वरित जांच

  1. android:debuggable="true" के लिए डिकंपाइल किए गए AndroidManifest.xml में देखें। डिबग करने योग्य निर्माण chrome://inspect के माध्यम से WebView को उजागर करते हैं, जिससे पूर्ण JS इंजेक्शन की अनुमति मिलती है।
  2. config.xml की समीक्षा करें कि क्या <access origin="*"> टैग बहुत अधिक अनुमति देने वाले हैं या www/index.html में CSP मेटा-टैग गायब हैं।
  3. www/ में eval(, new Function( या गतिशील रूप से निर्मित HTML के लिए Grep करें जो CSP बायपास को XSS में बदल सकता है।
  4. plugins/ में एम्बेडेड प्लगइनों की पहचान करें और ज्ञात CVEs खोजने के लिए npm audit --production या osv-scanner --lockfile चलाएँ।

डायनामिक एनालिसिस टिप्स

रिमोट WebView डिबगिंग

यदि एप्लिकेशन डिबग मोड में संकलित किया गया है (या स्पष्ट रूप से WebView.setWebContentsDebuggingEnabled(true) को कॉल करता है), तो आप Chrome DevTools को संलग्न कर सकते हैं:

bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"

यह आपको एक लाइव JavaScript कंसोल, DOM निरीक्षक और रनटाइम पर JavaScript फ़ंक्शंस को ओवरराइट करने की क्षमता देता है - क्लाइंट-साइड लॉजिक को बायपास करने के लिए अत्यंत उपयोगी। (अधिक विवरण के लिए Google की आधिकारिक दस्तावेज़ीकरण देखें।)

Frida के साथ JS ⇄ Native ब्रिज को हुक करना

अधिकांश प्लगइन्स का Java-पक्ष का प्रवेश बिंदु org.apache.cordova.CordovaPlugin.execute(...) है। इस विधि को हुक करना आपको JavaScript से किए गए कॉल्स की निगरानी या छेड़छाड़ करने की अनुमति देता है:

javascript
// frida -U -f com.vulnerable.bank -l hook.js --no-pause
Java.perform(function () {
var CordovaPlugin = Java.use('org.apache.cordova.CordovaPlugin');
CordovaPlugin.execute.overload('java.lang.String','org.json.JSONArray','org.apache.cordova.CallbackContext').implementation = function(act, args, ctx) {
console.log('[Cordova] ' + act + ' => ' + args);
// Tamper the first argument of a sensitive action
if (act === 'encrypt') {
args.put(0, '1234');
}
return this.execute(act, args, ctx);
};
});

Hardening Recommendations (2025)

  • नवीनतम प्लेटफ़ॉर्म पर अपडेट करें: cordova-android@13 (मई 2024) API 34 को लक्षित करता है और नए WebView शमन लाता है।
  • डिबग कलाकृतियों को हटाएं: सुनिश्चित करें कि android:debuggable="false" है और रिलीज़ बिल्ड में setWebContentsDebuggingEnabled को कॉल करने से बचें।
  • कड़े CSP और AllowList को लागू करें: हर HTML फ़ाइल में <meta http-equiv="Content-Security-Policy" ...> टैग जोड़ें और config.xml में <access> मूल्यों को प्रतिबंधित करें। उदाहरण न्यूनतम CSP जो इनलाइन स्क्रिप्ट को ब्लॉक करता है:
html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
  • स्पष्ट-टेक्स्ट ट्रैफ़िक को निष्क्रिय करें: AndroidManifest.xml में android:usesCleartextTraffic="false" सेट करें और/या एक [network-security-config] प्रदान करें जो TLS को लागू करता है।
  • प्लगइन स्वच्छता:
  • npm ci के साथ प्लगइन संस्करणों को पिन करें और उत्पन्न package-lock.json को कमिट करें।
  • समय-समय पर npm audit, osv-scanner या cordova-check-plugins चलाएं।
  • ओबफस्केशन: Terser/UglifyJS के साथ JavaScript को मिनिफाई करें और उत्पादन बिल्ड से स्रोत मानचित्र हटा दें ताकि सामान्य रिवर्सिंग को धीमा किया जा सके।

References

  • Apache Cordova – Cordova-Android 13.0.0 release notes (मई 2024)
  • OSV-ID MAL-2024-7845 – cordova-plugin-acuant में दुर्भावनापूर्ण कोड
  • CVE-2023-2507 – CleverTap Cordova Plugin deeplink XSS

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें