mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/cordova-apps.md'] to hi
This commit is contained in:
parent
844c1646f2
commit
b5bd11d87f
@ -4,13 +4,13 @@
|
||||
|
||||
**अधिक जानकारी के लिए देखें [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](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 का उपयोग करता है, जो बेहतर स्रोत कोड सुरक्षा प्रदान करता है।
|
||||
Apache Cordova को **हाइब्रिड एप्लिकेशन** के विकास के लिए **JavaScript, HTML, और CSS** का उपयोग करने के लिए जाना जाता है। यह Android और iOS एप्लिकेशन बनाने की अनुमति देता है; हालाँकि, इसमें एप्लिकेशन के स्रोत कोड को सुरक्षित करने के लिए कोई डिफ़ॉल्ट तंत्र नहीं है। React Native के विपरीत, Cordova डिफ़ॉल्ट रूप से स्रोत कोड को संकलित नहीं करता है, जो कोड छेड़छाड़ की कमजोरियों का कारण बन सकता है। Cordova एप्लिकेशन को रेंडर करने के लिए WebView का उपयोग करता है, जो HTML और JavaScript कोड को APK या IPA फ़ाइलों में संकलित करने के बाद भी उजागर करता है। दूसरी ओर, React Native JavaScript कोड को निष्पादित करने के लिए एक JavaScript VM का उपयोग करता है, जो बेहतर स्रोत कोड सुरक्षा प्रदान करता है।
|
||||
|
||||
### Cordova एप्लिकेशन को क्लोन करना
|
||||
### Cloning a Cordova Application
|
||||
|
||||
Cordova एप्लिकेशन को क्लोन करने से पहले, सुनिश्चित करें कि NodeJS अन्य पूर्वापेक्षाओं जैसे Android SDK, Java JDK, और Gradle के साथ स्थापित है। आधिकारिक Cordova [दस्तावेज़](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) इन इंस्टॉलेशन के लिए एक व्यापक गाइड प्रदान करता है।
|
||||
Cordova एप्लिकेशन को क्लोन करने से पहले, सुनिश्चित करें कि NodeJS अन्य पूर्वापेक्षाओं जैसे Android SDK, Java JDK, और Gradle के साथ स्थापित है। आधिकारिक Cordova [documentation](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) इन इंस्टॉलेशन के लिए एक व्यापक गाइड प्रदान करता है।
|
||||
|
||||
एक उदाहरण एप्लिकेशन का नाम `Bank.apk` है जिसका पैकेज नाम `com.android.bank` है। स्रोत कोड तक पहुँचने के लिए, `bank.apk` को अनज़िप करें और `bank/assets/www` फ़ोल्डर में जाएँ। इस फ़ोल्डर में एप्लिकेशन का पूरा स्रोत कोड है, जिसमें HTML और JS फ़ाइलें शामिल हैं। एप्लिकेशन की कॉन्फ़िगरेशन `bank/res/xml/config.xml` में मिल सकती है।
|
||||
एक उदाहरण एप्लिकेशन पर विचार करें जिसका नाम `Bank.apk` है और पैकेज नाम `com.android.bank` है। स्रोत कोड तक पहुँचने के लिए, `bank.apk` को अनज़िप करें और `bank/assets/www` फ़ोल्डर में जाएँ। इस फ़ोल्डर में एप्लिकेशन का पूरा स्रोत कोड है, जिसमें HTML और JS फ़ाइलें शामिल हैं। एप्लिकेशन की कॉन्फ़िगरेशन `bank/res/xml/config.xml` में पाई जा सकती है।
|
||||
|
||||
एप्लिकेशन को क्लोन करने के लिए, इन चरणों का पालन करें:
|
||||
```bash
|
||||
@ -24,7 +24,7 @@ cd bank-new
|
||||
|
||||
उचित Cordova Android प्लेटफ़ॉर्म संस्करण निर्धारित करने के लिए, मूल एप्लिकेशन के `cordova.js` फ़ाइल में `PLATFORM_VERSION_BUILD_LABEL` की जांच करें।
|
||||
|
||||
प्लेटफ़ॉर्म सेट करने के बाद, आवश्यक प्लगइन्स स्थापित करें। मूल एप्लिकेशन के `bank/assets/www/cordova_plugins.js` फ़ाइल में सभी प्लगइन्स और उनके संस्करणों की सूची है। नीचे दिखाए अनुसार प्रत्येक प्लगइन को व्यक्तिगत रूप से स्थापित करें:
|
||||
प्लेटफ़ॉर्म सेट करने के बाद, आवश्यक प्लगइन्स स्थापित करें। मूल एप्लिकेशन के `bank/assets/www/cordova_plugins.js` फ़ाइल में सभी प्लगइन्स और उनके संस्करणों की सूची है। प्रत्येक प्लगइन को नीचे दिखाए अनुसार व्यक्तिगत रूप से स्थापित करें:
|
||||
```bash
|
||||
cd bank-new
|
||||
cordova plugin add cordova-plugin-dialogs@2.0.1
|
||||
@ -44,10 +44,82 @@ APK बनाने के लिए, निम्नलिखित कमा
|
||||
cd bank-new
|
||||
cordova build android — packageType=apk
|
||||
```
|
||||
यह कमांड एक APK उत्पन्न करता है जिसमें डिबग विकल्प सक्षम होता है, जो Google Chrome के माध्यम से डिबगिंग को सुविधाजनक बनाता है। यदि एप्लिकेशन में कोड छेड़छाड़ का पता लगाने के तंत्र शामिल हैं, तो स्थापना से पहले APK पर हस्ताक्षर करना महत्वपूर्ण है।
|
||||
यह कमांड एक APK उत्पन्न करता है जिसमें डिबग विकल्प सक्षम होता है, जो Google Chrome के माध्यम से डिबगिंग को सुविधाजनक बनाता है। स्थापना से पहले APK पर हस्ताक्षर करना महत्वपूर्ण है, विशेष रूप से यदि एप्लिकेशन में कोड छेड़छाड़ पहचान तंत्र शामिल हैं।
|
||||
|
||||
### स्वचालन उपकरण
|
||||
### ऑटोमेशन टूल
|
||||
|
||||
जो लोग क्लोनिंग प्रक्रिया को स्वचालित करना चाहते हैं, उनके लिए **[MobSecco](https://github.com/Anof-cyber/MobSecco)** एक अनुशंसित उपकरण है। यह Android एप्लिकेशनों के क्लोनिंग को सरल बनाता है, ऊपर बताए गए चरणों को सरल बनाता है।
|
||||
जो लोग क्लोनिंग प्रक्रिया को स्वचालित करना चाहते हैं, उनके लिए **[MobSecco](https://github.com/Anof-cyber/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
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user