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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
अधिक जानकारी के लिए देखें 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
में पाई जा सकती है।
एप्लिकेशन को क्लोन करने के लिए, इन चरणों का पालन करें:
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
फ़ाइल में सभी प्लगइन्स और उनके संस्करणों की सूची है। प्रत्येक प्लगइन को नीचे दिखाए अनुसार व्यक्तिगत रूप से स्थापित करें:
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
यदि कोई प्लगइन npm पर उपलब्ध नहीं है, तो इसे GitHub से प्राप्त किया जा सकता है:
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
सुनिश्चित करें कि संकलन से पहले सभी पूर्वापेक्षाएँ पूरी हों:
cd bank-new
cordova requirements
APK बनाने के लिए, निम्नलिखित कमांड का उपयोग करें:
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
या बाद में अपग्रेड करें।
पेंटेस्ट के दौरान त्वरित जांच
android:debuggable="true"
के लिए डिकंपाइल किए गएAndroidManifest.xml
में देखें। डिबग करने योग्य निर्माणchrome://inspect
के माध्यम से WebView को उजागर करते हैं, जिससे पूर्ण JS इंजेक्शन की अनुमति मिलती है।config.xml
की समीक्षा करें कि क्या<access origin="*">
टैग बहुत अधिक अनुमति देने वाले हैं याwww/index.html
में CSP मेटा-टैग गायब हैं।www/
मेंeval(
,new Function(
या गतिशील रूप से निर्मित HTML के लिए Grep करें जो CSP बायपास को XSS में बदल सकता है।plugins/
में एम्बेडेड प्लगइनों की पहचान करें और ज्ञात CVEs खोजने के लिएnpm audit --production
याosv-scanner --lockfile
चलाएँ।
डायनामिक एनालिसिस टिप्स
रिमोट WebView डिबगिंग
यदि एप्लिकेशन डिबग मोड में संकलित किया गया है (या स्पष्ट रूप से WebView.setWebContentsDebuggingEnabled(true)
को कॉल करता है), तो आप Chrome DevTools को संलग्न कर सकते हैं:
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 से किए गए कॉल्स की निगरानी या छेड़छाड़ करने की अनुमति देता है:
// 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 जो इनलाइन स्क्रिप्ट को ब्लॉक करता है:
<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 का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।