Cordova Apps

Reading time: 8 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Kwa maelezo zaidi angalia 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 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

Kabla ya kunakili programu ya Cordova, hakikisha kuwa NodeJS imewekwa pamoja na mahitaji mengine kama Android SDK, Java JDK, na Gradle. Miongozo rasmi ya Cordova documentation inatoa mwongozo kamili wa usakinishaji huu.

Fikiria mfano wa programu inayoitwa Bank.apk yenye jina la kifurushi com.android.bank. Ili kufikia msimbo wa chanzo, fungua bank.apk na uelekee kwenye folda bank/assets/www. Folda hii ina msimbo kamili wa chanzo wa programu, ikiwa ni pamoja na faili za HTML na JS. Mipangilio ya programu inaweza kupatikana katika bank/res/xml/config.xml.

Ili kunakili programu, fuata hatua hizi:

bash
npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
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. Rejelea documentation 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 awali.

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

Ikiwa plugin haipatikani kwenye npm, inaweza kupatikana kutoka GitHub:

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

Hakikisha kuwa mahitaji yote ya awali yamekamilishwa kabla ya kukusanya:

bash
cd bank-new
cordova requirements

Ili kujenga APK, tumia amri ifuatayo:

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

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 cloning, 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 <access origin="*"> 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 <meta http-equiv="Content-Security-Policy" ...> tag katika kila faili ya HTML na punguza asili za <access> katika config.xml. Mfano wa CSP ya chini inayozuia scripts za ndani:
html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
  • 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

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks