From 68ee828650e953ba3e89a7c7ad137c4e1de83736 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 22 Jul 2025 18:11:42 +0000 Subject: [PATCH] Translated ['src/mobile-pentesting/cordova-apps.md'] to el --- src/mobile-pentesting/cordova-apps.md | 80 +++++++++++++++++++++++++-- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/src/mobile-pentesting/cordova-apps.md b/src/mobile-pentesting/cordova-apps.md index 3d80c2c88..178556bda 100644 --- a/src/mobile-pentesting/cordova-apps.md +++ b/src/mobile-pentesting/cordova-apps.md @@ -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 VM για την εκτέλεση του JavaScript κώδικα, προσφέροντας καλύτερη προστασία του πηγαίου κώδικα. +Το Apache Cordova αναγνωρίζεται για την δυνατότητα ανάπτυξης **υβριδικών εφαρμογών** χρησιμοποιώντας **JavaScript, HTML και CSS**. Επιτρέπει τη δημιουργία εφαρμογών Android και iOS. Ωστόσο, δεν διαθέτει μηχανισμό από προεπιλογή για την ασφάλιση του πηγαίου κώδικα της εφαρμογής. Σε αντίθεση με το React Native, το Cordova δεν μεταγλωττίζει τον πηγαίο κώδικα από προεπιλογή, γεγονός που μπορεί να οδηγήσει σε ευπάθειες παραχάραξης κώδικα. Το Cordova χρησιμοποιεί το WebView για την απόδοση εφαρμογών, εκθέτοντας τον HTML και JavaScript κώδικα ακόμη και μετά την μεταγλώττιση σε αρχεία APK ή IPA. Το React Native, αντίθετα, χρησιμοποιεί μια JavaScript VM για την εκτέλεση του JavaScript κώδικα, προσφέροντας καλύτερη προστασία του πηγαίου κώδικα. ### Κλωνοποίηση μιας Εφαρμογής Cordova Πριν κλωνοποιήσετε μια εφαρμογή Cordova, βεβαιωθείτε ότι το NodeJS είναι εγκατεστημένο μαζί με άλλες προϋποθέσεις όπως το Android SDK, το Java JDK και το Gradle. Η επίσημη [τεκμηρίωση](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) του Cordova παρέχει έναν ολοκληρωμένο οδηγό για αυτές τις εγκαταστάσεις. -Σκεφτείτε μια παράδειγμα εφαρμογή με το όνομα `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 @@ -34,7 +34,7 @@ cordova plugin add cordova-plugin-dialogs@2.0.1 cd bank-new cordova plugin add https://github.com/moderna/cordova-plugin-cache.git ``` -Βεβαιωθείτε ότι πληρούνται όλες οι προϋποθέσεις πριν από τη συμπίεση: +Βεβαιωθείτε ότι πληρούνται όλες οι προϋποθέσεις πριν από τη μεταγλώττιση: ```bash cd bank-new cordova requirements @@ -44,10 +44,82 @@ cordova requirements cd bank-new cordova build android — packageType=apk ``` -Αυτή η εντολή δημιουργεί ένα APK με την επιλογή αποσφαλμάτωσης ενεργοποιημένη, διευκολύνοντας την αποσφαλμάτωση μέσω του Google Chrome. Είναι κρίσιμο να υπογράψετε το APK πριν από την εγκατάσταση, ειδικά αν η εφαρμογή περιλαμβάνει μηχανισμούς ανίχνευσης παραβίασης κώδικα. +Αυτή η εντολή δημιουργεί ένα APK με την επιλογή αποσφαλμάτωσης ενεργοποιημένη, διευκολύνοντας την αποσφαλμάτωση μέσω του Google Chrome. Είναι κρίσιμο να υπογράψετε το APK πριν από την εγκατάσταση, ειδικά αν η εφαρμογή περιλαμβάνει μηχανισμούς ανίχνευσης αλλοίωσης κώδικα. ### Εργαλείο Αυτοματοποίησης Για όσους επιθυμούν να αυτοματοποιήσουν τη διαδικασία κλωνοποίησης, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** είναι ένα προτεινόμενο εργαλείο. Απλοποιεί την κλωνοποίηση εφαρμογών Android, διευκολύνοντας τα βήματα που περιγράφονται παραπάνω. +--- + +## Κίνδυνοι Ασφαλείας & Πρόσφατες Ευπάθειες (2023-2025) + +Η αρχιτεκτονική βασισμένη σε plugins του Cordova σημαίνει ότι **η πλειονότητα της επιφάνειας επίθεσης βρίσκεται μέσα σε τρίτα plugins και τη γέφυρα WebView**. Τα παρακάτω ζητήματα έχουν εκμεταλλευτεί ενεργά ή έχουν δημοσιοποιηθεί τα τελευταία χρόνια: + +* **Κακόβουλα Πακέτα NPM.** Τον Ιούλιο του 2024, το πακέτο `cordova-plugin-acuant` αφαιρέθηκε από το μητρώο NPM μετά την ανακάλυψη ότι εγκαθιστούσε κακόβουλο κώδικα κατά την εγκατάσταση (OSV-ID MAL-2024-7845). Οποιαδήποτε μηχανή προγραμματιστή που εκτέλεσε `npm install cordova-plugin-acuant` θα πρέπει να θεωρείται ότι έχει παραβιαστεί. Ελέγξτε το `package.json`/`package-lock.json` για απροσδόκητα plugins Cordova και κλειδώστε αξιόπιστες εκδόσεις. [OSV advisory](/) +* **Μη Επικυρωμένα Deeplinks → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) αποτυγχάνει να απολυμάνει την είσοδο deeplink, επιτρέποντας σε έναν επιτιθέμενο να εισάγει αυθαίρετο JavaScript που εκτελείται στο κύριο πλαίσιο WebView όταν ανοίγει ένας κατασκευασμένος σύνδεσμος. Ενημερώστε σε ≥ 2.6.3 ή αφαιρέστε μη αξιόπιστες παραμέτρους URI κατά την εκτέλεση. [CVE-2023-2507](/) +* **Παλιός Κωδικός Πλατφόρμας.** `cordova-android` ≤ 12 αποστέλλει με targetSdk 33 ή χαμηλότερο. Από τον Μάιο του 2024, το Google Play απαιτεί API 34, και αρκετές δυνατότητες ενίσχυσης του WebView (π.χ. αυτόματα παραγόμενο `exported="false"` για στοιχεία) είναι διαθέσιμες μόνο σε API 34+. Αναβαθμίστε σε `cordova-android@13.0.0` ή νεότερη έκδοση. + +### Γρήγοροι έλεγχοι κατά τη διάρκεια ενός pentest + +1. **Αναζητήστε `android:debuggable="true"`** στο αποσυμπιεσμένο `AndroidManifest.xml`. Οι εκδόσεις αποσφαλμάτωσης εκθέτουν το WebView μέσω του `chrome://inspect` επιτρέποντας πλήρη εισαγωγή JS. +2. Ελέγξτε το `config.xml` για υπερβολικά επιτρεπτικά `` tags ή απουσία CSP meta-tags στο `www/index.html`. +3. Grep `www/` για `eval(`, `new Function(` ή δυναμικά κατασκευασμένο HTML που θα μπορούσε να μετατρέψει παρακάμψεις CSP σε XSS. +4. Εντοπίστε ενσωματωμένα plugins στο `plugins/` και εκτελέστε `npm audit --production` ή `osv-scanner --lockfile` για να βρείτε γνωστές CVEs. + +--- + +## Συμβουλές Δυναμικής Ανάλυσης + +### Αποσφαλμάτωση WebView από Απόσταση + +Εάν η εφαρμογή έχει μεταγλωττιστεί σε **debug** mode (ή καλεί ρητά `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 για περισσότερες λεπτομέρειες.) + +### Hooking the JS ⇄ Native bridge with Frida + +Το σημείο εισόδου της Java για τα περισσότερα plugins είναι `org.apache.cordova.CordovaPlugin.execute(...)`. Hooking αυτή τη μέθοδο σας επιτρέπει να παρακολουθείτε ή να τροποποιείτε τις κλήσεις που γίνονται από το 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); +}; +}); +``` +--- + +## Συστάσεις Σκληροποίησης (2025) + +* **Ενημερώστε την τελευταία πλατφόρμα:** `cordova-android@13` (Μάιος 2024) στοχεύει το API 34 και φέρνει νέες μετρήσεις μετριασμού WebView. +* **Αφαιρέστε τα αρχεία αποσφαλμάτωσης:** Βεβαιωθείτε ότι το `android:debuggable="false"` και αποφύγετε την κλήση του `setWebContentsDebuggingEnabled` σε εκδόσεις παραγωγής. +* **Επιβάλλετε μια αυστηρή CSP & AllowList:** Προσθέστε μια `` ετικέτα σε κάθε αρχείο HTML και περιορίστε τις προελεύσεις `` στο `config.xml`. +Παράδειγμα ελάχιστης CSP που μπλοκάρει inline scripts: +```html + +``` +* **Απενεργοποιήστε την κυκλοφορία σε καθαρό κείμενο:** Στο `AndroidManifest.xml` ορίστε `android:usesCleartextTraffic="false"` και/ή παρέχετε ένα [network-security-config] που επιβάλλει TLS. +* **Υγιεινή plugin:** +* Κλειδώστε τις εκδόσεις των plugins με `npm ci` και δεσμεύστε το παραγόμενο `package-lock.json`. +* Εκτελέστε περιοδικά `npm audit`, `osv-scanner` ή `cordova-check-plugins`. +* **Αποσφράγιση:** Μειώστε το JavaScript με Terser/UglifyJS και αφαιρέστε τους χάρτες πηγής από τις παραγωγικές εκδόσεις για να επιβραδύνετε την casual αναστροφή. + +--- + +## Αναφορές + +* Apache Cordova – Σημειώσεις έκδοσης Cordova-Android 13.0.0 (Μάιος 2024) +* OSV-ID MAL-2024-7845 – Κακόβουλος κώδικας στο `cordova-plugin-acuant` +* CVE-2023-2507 – CleverTap Cordova Plugin deeplink XSS + {{#include ../banners/hacktricks-training.md}}