diff --git a/src/mobile-pentesting/cordova-apps.md b/src/mobile-pentesting/cordova-apps.md index 26b34f043..9711bda7f 100644 --- a/src/mobile-pentesting/cordova-apps.md +++ b/src/mobile-pentesting/cordova-apps.md @@ -4,7 +4,7 @@ **Kwa maelezo zaidi angalia [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Hii ni muhtasari: -Apache Cordova inatambulika kwa kuwezesha maendeleo ya **maombi ya mchanganyiko** kwa kutumia **JavaScript, HTML, na CSS**. Inaruhusu uundaji wa maombi ya Android na iOS; hata hivyo, haina mekanizma ya default ya kulinda msimbo wa chanzo wa programu. Kinyume na React Native, Cordova haitengenezi msimbo wa chanzo kwa default, ambayo inaweza kusababisha udhaifu wa kubadilisha msimbo. Cordova inatumia WebView kuonyesha maombi, ikifunua msimbo wa HTML na JavaScript hata baada ya kutengenezwa kuwa faili za APK au IPA. React Native, kinyume chake, inatumia JavaScript VM kutekeleza msimbo wa JavaScript, ikitoa ulinzi bora wa msimbo wa chanzo. +Apache Cordova inatambulika kwa kuwezesha maendeleo ya **maombi ya mchanganyiko** kwa kutumia **JavaScript, HTML, na CSS**. Inaruhusu uundaji wa maombi ya Android na iOS; hata hivyo, haina mekanizma ya msingi ya kulinda msimbo wa chanzo wa programu. Kinyume na React Native, Cordova haitengenezi msimbo wa chanzo kwa msingi, ambayo inaweza kusababisha udhaifu wa kubadilisha msimbo. Cordova inatumia WebView kuonyesha maombi, ikifunua msimbo wa HTML na JavaScript hata baada ya kutengenezwa kuwa faili za APK au IPA. React Native, kinyume chake, inatumia JavaScript VM kutekeleza msimbo wa JavaScript, ikitoa ulinzi bora wa msimbo wa chanzo. ### Cloning a Cordova Application @@ -20,11 +20,11 @@ cd bank-new ``` Nakili maudhui ya `bank/assets/www` hadi `bank-new/www`, ukiondoa `cordova_plugins.js`, `cordova.js`, `cordova-js-src/`, na saraka ya `plugins/`. -Taja jukwaa (Android au iOS) unapounda mradi mpya wa Cordova. Kwa kunakili programu ya Android, ongeza jukwaa la Android. Kumbuka kwamba toleo za jukwaa la Cordova na viwango vya API vya Android ni tofauti. Angalia [documentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) ya Cordova kwa maelezo kuhusu toleo za jukwaa na APIs za Android zinazoungwa mkono. +Taja jukwaa (Android au iOS) unapounda mradi mpya wa Cordova. Kwa kunakili programu ya Android, ongeza jukwaa la Android. Kumbuka kwamba toleo za jukwaa la Cordova na viwango vya API vya Android ni tofauti. Rejelea [documentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) ya Cordova kwa maelezo kuhusu toleo za jukwaa na APIs za Android zinazoungwa mkono. -Ili kubaini toleo sahihi la jukwaa la Cordova Android, angalia `PLATFORM_VERSION_BUILD_LABEL` katika faili ya `cordova.js` ya programu ya asili. +Ili kubaini toleo sahihi la jukwaa la Cordova Android, angalia `PLATFORM_VERSION_BUILD_LABEL` katika faili ya `cordova.js` ya programu ya awali. -Baada ya kuweka jukwaa, sakinisha plugins zinazohitajika. Faili ya `bank/assets/www/cordova_plugins.js` ya programu ya asili inataja plugins zote na toleo zao. Sakinisha kila plugin moja kwa moja kama inavyoonyeshwa hapa chini: +Baada ya kuweka jukwaa, sakinisha plugins zinazohitajika. Faili ya `bank/assets/www/cordova_plugins.js` ya programu ya awali inataja plugins zote na toleo zao. Sakinisha kila plugin moja kwa moja kama inavyoonyeshwa hapa chini: ```bash cd bank-new cordova plugin add cordova-plugin-dialogs@2.0.1 @@ -34,7 +34,7 @@ Ikiwa plugin haipatikani kwenye npm, inaweza kupatikana kutoka GitHub: cd bank-new cordova plugin add https://github.com/moderna/cordova-plugin-cache.git ``` -Hakikisha mahitaji yote ya awali yamekamilishwa kabla ya kukusanya: +Hakikisha kuwa mahitaji yote ya awali yamekamilishwa kabla ya kukusanya: ```bash cd bank-new cordova requirements @@ -44,10 +44,82 @@ Ili kujenga APK, tumia amri ifuatayo: cd bank-new cordova build android — packageType=apk ``` -Amri hii inazalisha APK ikiwa na chaguo la debug limewezeshwa, kurahisisha ufuatiliaji kupitia Google Chrome. Ni muhimu kusaini APK kabla ya usakinishaji, hasa ikiwa programu ina mifumo ya kugundua uharibifu wa msimbo. +Hii amri inazalisha APK yenye chaguo la debug limewezeshwa, ikirahisisha ufuatiliaji kupitia Google Chrome. Ni muhimu kusaini APK kabla ya usakinishaji, hasa ikiwa programu ina mifumo ya kugundua uharibifu wa msimbo. ### Zana ya Utaftaji -Kwa wale wanaotafuta kuharakisha mchakato wa kunakili, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** ni zana inayopendekezwa. Inarahisisha kunakili programu za Android, ikifanya hatua zilizoelezwa hapo juu kuwa rahisi. +Kwa wale wanaotafuta kuharakisha mchakato wa cloning, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** ni zana inayopendekezwa. Inarahisisha cloning ya programu za Android, ikifanya hatua zilizoelezwa hapo juu kuwa rahisi. + +--- + +## Hatari za Usalama & Uhalifu wa Karibuni (2023-2025) + +Msingi wa programu za Cordova una maana kwamba **sehemu kubwa ya mashambulizi iko ndani ya plugins za wahusika wengine na daraja la WebView**. Masuala yafuatayo yamekuwa yakitumiwa kwa nguvu au kufichuliwa hadharani katika miaka michache iliyopita: + +* **Pakiti za NPM Mbaya.** Mnamo Julai 2024, pakiti `cordova-plugin-acuant` iliondolewa kutoka kwenye rejista ya NPM baada ya kugundulika ikitupa msimbo mbaya wakati wa usakinishaji (OSV-ID MAL-2024-7845). Kila mashine ya developer iliyotekeleza `npm install cordova-plugin-acuant` inapaswa kuzingatiwa kuwa imeathirika. Kagua `package.json`/`package-lock.json` kwa plugins za Cordova zisizotarajiwa na uweke toleo lililoaminika. [OSV advisory](/) +* **Deeplinks Zisizothibitishwa → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) inashindwa kusafisha pembejeo za deeplink, ikiruhusu mshambuliaji kuingiza JavaScript isiyo ya kawaida inayotekelezwa katika muktadha wa WebView kuu wakati kiungo kilichoundwa kinapofunguliwa. Sasisha hadi ≥ 2.6.3 au ondoa vigezo vya URI visivyoaminika wakati wa utekelezaji. [CVE-2023-2507](/) +* **Msimbo wa Jukwaa Usio wa Kisasa.** `cordova-android` ≤ 12 inakuja na targetSdk 33 au chini. Kuanzia Mei 2024, Google Play inahitaji API 34, na vipengele kadhaa vya kuimarisha WebView (k.m. `exported="false"` inayozalishwa kiotomatiki kwa vipengele) vinapatikana tu katika API 34+. Pandisha hadi `cordova-android@13.0.0` au baadaye. + +### Ukaguzi wa Haraka wakati wa pentest + +1. **Tafuta `android:debuggable="true"`** katika `AndroidManifest.xml` iliyotafsiriwa. Ujenzi wa debug unafichua WebView kupitia `chrome://inspect` ikiruhusu kuingiza JS kwa ukamilifu. +2. Kagua `config.xml` kwa lebo za `` zenye ruhusa nyingi au lebo za CSP meta ambazo hazipo katika `www/index.html`. +3. Grep `www/` kwa `eval(`, `new Function(` au HTML iliyojengwa kwa njia ya kidinari ambayo inaweza kubadilisha bypasses za CSP kuwa XSS. +4. Tambua plugins zilizojumuishwa katika `plugins/` na uendeshe `npm audit --production` au `osv-scanner --lockfile` ili kupata CVEs zinazojulikana. + +--- + +## Vidokezo vya Uchambuzi wa Kijamii + +### Ufuatiliaji wa WebView wa Kijijini + +Ikiwa programu imeundwa katika **debug** mode (au inaita kwa wazi `WebView.setWebContentsDebuggingEnabled(true)`), unaweza kuunganisha Chrome DevTools: +```bash +adb forward tcp:9222 localabstract:chrome_devtools_remote +google-chrome --new-window "chrome://inspect/#devices" +``` +Hii inakupa console ya JavaScript ya moja kwa moja, mtafutaji wa DOM na uwezo wa kubadilisha kazi za JavaScript wakati wa utekelezaji – ni rahisi sana kwa kupita logic ya upande wa mteja. (Tazama nyaraka rasmi za Google kwa maelezo zaidi.) + +### Kuunganisha daraja la JS ⇄ Native na Frida + +Nukta ya kuingia upande wa Java ya plugins nyingi ni `org.apache.cordova.CordovaPlugin.execute(...)`. Kuunganisha njia hii kunakupa uwezo wa kufuatilia au kuingilia kati simu zinazofanywa kutoka 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); +}; +}); +``` +--- + +## Mapendekezo ya Kuimarisha (2025) + +* **Sasisha kwenye jukwaa la hivi punde:** `cordova-android@13` (Mei 2024) inalenga API 34 na inaleta mipango mipya ya WebView. +* **Ondoa vitu vya debug:** Hakikisha `android:debuggable="false"` na epuka kuita `setWebContentsDebuggingEnabled` katika toleo la kutolewa. +* **Lazimisha CSP kali & Orodha ya Ruhusa:** Ongeza `` tag katika kila faili ya HTML na punguza asili za `` katika `config.xml`. +Mfano wa CSP ya chini inayozuia scripts za ndani: +```html + +``` +* **Zima trafiki ya maandiko wazi:** Katika `AndroidManifest.xml` weka `android:usesCleartextTraffic="false"` na/au toa [network-security-config] inayolazimisha TLS. +* **Usafi wa Plugin:** +* Funga toleo za plugin kwa `npm ci` na uweke `package-lock.json` iliyozalishwa. +* Endesha mara kwa mara `npm audit`, `osv-scanner` au `cordova-check-plugins`. +* **Obfuscation:** Punguza JavaScript kwa Terser/UglifyJS na ondolea ramani za chanzo kutoka kwa toleo la uzalishaji ili kuzuia kurudi nyuma kwa urahisi. + +--- + +## Marejeo + +* Apache Cordova – Nota za kutolewa za Cordova-Android 13.0.0 (Mei 2024) +* OSV-ID MAL-2024-7845 – Kanuni mbaya katika `cordova-plugin-acuant` +* CVE-2023-2507 – CleverTap Cordova Plugin deeplink XSS {{#include ../banners/hacktricks-training.md}}