Translated ['src/mobile-pentesting/cordova-apps.md'] to sr

This commit is contained in:
Translator 2025-07-22 18:11:19 +00:00
parent bbd22656a7
commit 59df261990

View File

@ -2,15 +2,15 @@
{{#include ../banners/hacktricks-training.md}}
**Za više detalja proverite [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Ovo je sažetak:
**Za više detalja pogledajte [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Ovo je sažetak:
Apache Cordova je prepoznat kao alat za razvoj **hibridnih aplikacija** koristeći **JavaScript, HTML i CSS**. Omogućava kreiranje Android i iOS aplikacija; međutim, nema podrazumevani mehanizam za zaštitu izvornog koda aplikacije. Za razliku od React Native, Cordova podrazumevano ne kompajlira izvorni kod, što može dovesti do ranjivosti na manipulaciju kodom. Cordova koristi WebView za prikazivanje aplikacija, izlažući HTML i JavaScript kod čak i nakon što su kompajlirani u APK ili IPA datoteke. React Native, s druge strane, koristi JavaScript VM za izvršavanje JavaScript koda, nudeći bolju zaštitu izvornog koda.
Apache Cordova je prepoznatljiv po omogućavanju razvoja **hibridnih aplikacija** koristeći **JavaScript, HTML i CSS**. Omogućava kreiranje Android i iOS aplikacija; međutim, nema podrazumevani mehanizam za zaštitu izvornog koda aplikacije. Za razliku od React Native, Cordova ne kompajlira izvorni kod podrazumevano, što može dovesti do ranjivosti na manipulaciju kodom. Cordova koristi WebView za renderovanje aplikacija, izlažući HTML i JavaScript kod čak i nakon što su kompajlirani u APK ili IPA datoteke. React Native, s druge strane, koristi JavaScript VM za izvršavanje JavaScript koda, nudeći bolju zaštitu izvornog koda.
### Kloniranje Cordova Aplikacije
Pre nego što klonirate Cordova aplikaciju, osigurajte da je NodeJS instaliran zajedno sa drugim potrebnim alatima kao što su Android SDK, Java JDK i Gradle. Zvanična Cordova [dokumentacija](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) pruža sveobuhvatan vodič za ove instalacije.
Pre nego što klonirate Cordova aplikaciju, osigurajte da je NodeJS instaliran zajedno sa drugim preduslovima kao što su Android SDK, Java JDK i Gradle. Zvanična Cordova [dokumentacija](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) pruža sveobuhvatan vodič za ove instalacije.
Razmotrite primer aplikacije pod nazivom `Bank.apk` sa paketnim imenom `com.android.bank`. Da biste pristupili izvoru koda, raspakujte `bank.apk` i idite u folder `bank/assets/www`. Ovaj folder sadrži kompletan izvorni kod aplikacije, uključujući HTML i JS datoteke. Konfiguracija aplikacije može se naći u `bank/res/xml/config.xml`.
Razmotrite primer aplikacije pod nazivom `Bank.apk` sa paketnim imenom `com.android.bank`. Da biste pristupili izvoru, raspakujte `bank.apk` i idite u folder `bank/assets/www`. Ovaj folder sadrži kompletan izvorni kod aplikacije, uključujući HTML i JS datoteke. Konfiguracija aplikacije može se naći u `bank/res/xml/config.xml`.
Da biste klonirali aplikaciju, pratite ove korake:
```bash
@ -29,7 +29,7 @@ Nakon postavljanja platforme, instalirajte potrebne plugine. Originalni `bank/as
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
Ako dodatak nije dostupan na npm-u, može se preuzeti sa GitHub-a:
Ako dodatak nije dostupan na npm, može se preuzeti sa GitHub-a:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
@ -44,10 +44,82 @@ Da biste izgradili APK, koristite sledeću komandu:
cd bank-new
cordova build android — packageType=apk
```
Ova komanda generiše APK sa omogućenom debug opcijom, olakšavajući debagovanje putem Google Chrome-a. Ključno je potpisati APK pre instalacije, posebno ako aplikacija uključuje mehanizme za detekciju manipulacije kodom.
Ova komanda generiše APK sa omogućenom debug opcijom, olakšavajući debagovanje putem Google Chrome-a. Ključno je potpisati APK pre instalacije, posebno ako aplikacija uključuje mehanizme za otkrivanje manipulacije kodom.
### Alat za automatizaciju
Za one koji žele da automatizuju proces kloniranja, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** je preporučeni alat. On pojednostavljuje kloniranje Android aplikacija, olakšavajući korake opisane iznad.
---
## Bezbednosni rizici i nedavne ranjivosti (2023-2025)
Cordova-ina arhitektura zasnovana na plugin-ima znači da **većina napadačkog površina leži unutar trećih strana plugin-a i WebView mosta**. Sledeći problemi su aktivno korišćeni ili javno objavljeni u poslednjih nekoliko godina:
* **Zlonamerni NPM paketi.** U julu 2024. paket `cordova-plugin-acuant` je uklonjen iz NPM registra nakon što je otkriveno da ubacuje zlonamerni kod tokom instalacije (OSV-ID MAL-2024-7845). Svaka developerska mašina koja je izvršila `npm install cordova-plugin-acuant` treba da se smatra kompromitovanom. Proverite `package.json`/`package-lock.json` na neočekivane Cordova plugine i pinujte pouzdane verzije. [OSV advisory](/)
* **Nevalidirani deeplinks → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507) ne uspeva da sanitizuje deeplink ulaze, omogućavajući napadaču da ubaci proizvoljni JavaScript koji se izvršava u glavnom WebView kontekstu kada se otvori kreirana veza. Ažurirajte na ≥ 2.6.3 ili uklonite nepouzdane URI parametre u vreme izvršavanja. [CVE-2023-2507](/)
* **Zastarjeli kod platforme.** `cordova-android` ≤ 12 dolazi sa targetSdk 33 ili nižim. Počevši od maja 2024. Google Play zahteva API 34, a nekoliko WebView funkcija za učvršćivanje (npr. automatski generisano `exported="false"` za komponente) prisutne su samo u API 34+. Ažurirajte na `cordova-android@13.0.0` ili noviji.
### Brze provere tokom pentest-a
1. **Potražite `android:debuggable="true"`** u dekompiliranom `AndroidManifest.xml`. Debuggable build-ovi izlažu WebView preko `chrome://inspect`, omogućavajući potpunu JS injekciju.
2. Pregledajte `config.xml` na previše permisivne `<access origin="*">` tagove ili nedostajuće CSP meta-tagove u `www/index.html`.
3. Grep-ujte `www/` za `eval(`, `new Function(` ili dinamički konstruisani HTML koji bi mogao pretvoriti CSP zaobilaženja u XSS.
4. Identifikujte ugrađene plugine u `plugins/` i izvršite `npm audit --production` ili `osv-scanner --lockfile` da pronađete poznate CVE.
---
## Saveti za dinamičku analizu
### Daljinsko WebView debagovanje
Ako je aplikacija kompajlirana u **debug** modu (ili eksplicitno poziva `WebView.setWebContentsDebuggingEnabled(true)`), možete priključiti Chrome DevTools:
```bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"
```
Ovo vam daje live JavaScript konzolu, DOM inspektor i mogućnost da prepišete JavaScript funkcije u runtime-u izuzetno korisno za zaobilaženje klijentske logike. (Pogledajte zvaničnu dokumentaciju Google-a za više detalja.)
### Hooking the JS ⇄ Native bridge with Frida
Java-strana ulazna tačka većine plugina je `org.apache.cordova.CordovaPlugin.execute(...)`. Hooking ove metode vam omogućava da pratite ili manipulišete pozivima koji se vrše iz JavaScript-a:
```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);
};
});
```
---
## Preporuke za učvršćivanje (2025)
* **Ažurirajte na najnoviju platformu:** `cordova-android@13` (maj 2024) cilja API 34 i donosi nove WebView mitigacije.
* **Uklonite debug artefakte:** Osigurajte `android:debuggable="false"` i izbegavajte pozivanje `setWebContentsDebuggingEnabled` u verzijama za objavljivanje.
* **Sprovodite strogu CSP & AllowList:** Dodajte `<meta http-equiv="Content-Security-Policy" ...>` tag u svaku HTML datoteku i ograničite `<access>` porekla u `config.xml`.
Primer minimalnog CSP-a koji blokira inline skripte:
```html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
```
* **Onemogućite saobraćaj u čistom tekstu:** U `AndroidManifest.xml` postavite `android:usesCleartextTraffic="false"` i/ili obezbedite [network-security-config] koji sprovodi TLS.
* **Higijena plugina:**
* Zaključajte verzije plugina sa `npm ci` i komitujte generisani `package-lock.json`.
* Periodično pokrećite `npm audit`, `osv-scanner` ili `cordova-check-plugins`.
* **Obfuskacija:** Minifikujte JavaScript sa Terser/UglifyJS i uklonite mape izvora iz produkcijskih verzija kako biste usporili slučajno obrnuto inženjerstvo.
---
## Reference
* Apache Cordova Cordova-Android 13.0.0 beleške o izdanju (maj 2024)
* OSV-ID MAL-2024-7845 Zlonamerni kod u `cordova-plugin-acuant`
* CVE-2023-2507 CleverTap Cordova Plugin deeplink XSS
{{#include ../banners/hacktricks-training.md}}