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

This commit is contained in:
Translator 2025-07-22 18:11:54 +00:00
parent 44dad5b937
commit ddfc80e209

View File

@ -4,7 +4,7 @@
**Daha fazla detay için [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Bu bir özet:
Apache Cordova, **JavaScript, HTML ve CSS** kullanarak **hibrit uygulamalar** geliştirmeyi sağladığı için tanınmaktadır. Android ve iOS uygulamalarının oluşturulmasına olanak tanır; ancak, uygulamanın kaynak kodunu güvence altına almak için varsayılan bir mekanizma sunmamaktadır. React Native'in aksine, Cordova varsayılan olarak kaynak kodunu derlemez, bu da kod değiştirme zafiyetlerine yol açabilir. Cordova, uygulamaları render etmek için WebView kullanır ve HTML ile JavaScript kodunu, APK veya IPA dosyalarına derlendikten sonra bile açığa çıkarır. React Native ise, JavaScript kodunu çalıştırmak için bir JavaScript VM kullanarak daha iyi bir kaynak kodu koruması sunar.
Apache Cordova, **JavaScript, HTML ve CSS** kullanarak **hibrit uygulamaların** geliştirilmesini sağladığı için tanınmaktadır. Android ve iOS uygulamalarının oluşturulmasına olanak tanır; ancak, uygulamanın kaynak kodunu güvence altına almak için varsayılan bir mekanizma sunmamaktadır. React Native'in aksine, Cordova varsayılan olarak kaynak kodunu derlemez, bu da kod değiştirme zafiyetlerine yol açabilir. Cordova, uygulamaları render etmek için WebView kullanır ve HTML ile JavaScript kodunu, APK veya IPA dosyalarına derlendikten sonra bile açığa çıkarır. React Native ise, JavaScript kodunu çalıştırmak için bir JavaScript VM kullanarak daha iyi kaynak kodu koruması sunar.
### Cordova Uygulamasını Klonlama
@ -20,11 +20,11 @@ cd bank-new
```
`bank/assets/www` içeriğini `bank-new/www` dizinine kopyalayın, `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` ve `plugins/` dizinini hariç tutarak.
Yeni bir Cordova projesi oluştururken platformu (Android veya iOS) belirtin. Bir Android uygulamasını klonlarken Android platformunu ekleyin. Cordova'nın platform sürümleri ve Android API seviyeleri farklıdır. Platform sürümleri ve desteklenen Android API'leri hakkında ayrıntılar için Cordova [belgelerine](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) bakın.
Yeni bir Cordova projesi oluştururken platformu (Android veya iOS) belirtin. Bir Android uygulamasını klonlarken Android platformunu ekleyin. Cordova'nın platform sürümleri ve Android API seviyeleri farklıdır. Platform sürümleri ve desteklenen Android API'leri hakkında ayrıntılar için Cordova [documentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) sayfasına bakın.
Uygun Cordova Android platform sürümünü belirlemek için, orijinal uygulamanın `cordova.js` dosyasındaki `PLATFORM_VERSION_BUILD_LABEL` değerini kontrol edin.
Platformu ayarladıktan sonra, gerekli eklentileri yükleyin. Orijinal uygulamanın `bank/assets/www/cordova_plugins.js` dosyası tüm eklentileri ve sürümlerini listeler. Aşağıda gösterildiği gibi her eklentiyi ayrı ayrı yükleyin:
Platformu kurduktan sonra, gerekli eklentileri yükleyin. Orijinal uygulamanın `bank/assets/www/cordova_plugins.js` dosyası tüm eklentileri ve sürümlerini listeler. Aşağıda gösterildiği gibi her eklentiyi ayrı ayrı yükleyin:
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
@ -39,15 +39,87 @@ Tüm ön koşulların derlemeden önce karşılandığından emin olun:
cd bank-new
cordova requirements
```
APK'yi oluşturmak için aşağıdaki komutu kullanın:
APK oluşturmak için aşağıdaki komutu kullanın:
```bash
cd bank-new
cordova build android — packageType=apk
```
Bu komut, hata ayıklama seçeneği etkinleştirilmiş bir APK oluşturur ve Google Chrome üzerinden hata ayıklamayı kolaylaştırır. Uygulama kodu değiştirme tespiti mekanizmaları içeriyorsa, kurulumdan önce APK'nın imzalanması çok önemlidir.
Bu komut, hata ayıklama seçeneği etkinleştirilmiş bir APK oluşturur ve Google Chrome üzerinden hata ayıklamayı kolaylaştırır. Uygulama, kod değiştirme tespit mekanizmaları içeriyorsa, kurulumdan önce APK'nın imzalanması kritik öneme sahiptir.
### Otomasyon Aracı
Klonlama sürecini otomatikleştirmek isteyenler için, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** önerilen bir araçtır. Android uygulamalarının klonlanmasını kolaylaştırır ve yukarıda belirtilen adımları basitleştirir.
Klonlama sürecini otomatikleştirmek isteyenler için, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** önerilen bir araçtır. Android uygulamalarının klonlanmasını kolaylaştırarak yukarıda belirtilen adımları basitleştirir.
---
## Güvenlik Riskleri & Son Zafiyetler (2023-2025)
Cordova'nın eklenti tabanlı mimarisi, **saldırı yüzeyinin çoğunun üçüncü taraf eklentiler ve WebView köprüsü içinde yer aldığı** anlamına gelir. Son birkaç yılda aktif olarak istismar edilen veya kamuya açıklanan aşağıdaki sorunlar bulunmaktadır:
* **Kötü Amaçlı NPM Paketleri.** Temmuz 2024'te `cordova-plugin-acuant` paketi, kurulum sırasında kötü amaçlı kod bıraktığı keşfedildikten sonra NPM kayıt defterinden kaldırıldı (OSV-ID MAL-2024-7845). `npm install cordova-plugin-acuant` komutunu çalıştıran herhangi bir geliştirici makinesi tehlikeye girmiş sayılmalıdır. Beklenmedik Cordova eklentileri için `package.json`/`package-lock.json` dosyalarını denetleyin ve güvenilir sürümleri sabitleyin. [OSV advisory](/)
* **Doğrulanmamış Derin Bağlantılar → XSS/RCE.** `CleverTap Cordova Plugin ≤ 2.6.2` (CVE-2023-2507), derin bağlantı girişini temizlemekte başarısızdır ve bir saldırganın, oluşturulmuş bir bağlantııldığında ana WebView bağlamında çalışan rastgele JavaScript enjekte etmesine olanak tanır. ≥ 2.6.3 sürümüne güncelleyin veya güvenilmeyen URI parametrelerini çalışma zamanında kaldırın. [CVE-2023-2507](/)
* **Güncel Olmayan Platform Kodu.** `cordova-android` ≤ 12, targetSdk 33 veya daha düşük ile gelir. Mayıs 2024 itibarıyla Google Play, API 34 gerektirecek ve birkaç WebView güçlendirme özelliği (örneğin, bileşenler için otomatik olarak oluşturulan `exported="false"`) yalnızca API 34+te mevcuttur. `cordova-android@13.0.0` veya daha yenisine yükseltin.
### Pentest sırasında hızlı kontroller
1. **Decompiled `AndroidManifest.xml` içinde `android:debuggable="true"` arayın.** Hata ayıklanabilir yapılar, `chrome://inspect` üzerinden WebView'i açarak tam JS enjekte edilmesine olanak tanır.
2. `config.xml` dosyasını, aşırı izin veren `<access origin="*">` etiketleri veya `www/index.html` içinde eksik CSP meta etiketleri için gözden geçirin.
3. `www/` içinde `eval(`, `new Function(` veya CSP bypass'larını XSS'e dönüştürebilecek dinamik olarak oluşturulmuş HTML için grep yapın.
4. `plugins/` içinde gömülü eklentileri tanımlayın ve bilinen CVE'leri bulmak için `npm audit --production` veya `osv-scanner --lockfile` komutunu çalıştırın.
---
## Dinamik Analiz İpuçları
### Uzaktan WebView Hata Ayıklama
Uygulama **debug** modunda derlenmişse (veya açıkça `WebView.setWebContentsDebuggingEnabled(true)` çağrılıyorsa), Chrome DevTools'u bağlayabilirsiniz:
```bash
adb forward tcp:9222 localabstract:chrome_devtools_remote
google-chrome --new-window "chrome://inspect/#devices"
```
Bu, size canlı bir JavaScript konsolu, DOM denetleyicisi ve çalışma zamanında JavaScript işlevlerini geçersiz kılma yeteneği sağlar - istemci tarafı mantığını aşmak için son derece kullanışlıdır. (Daha fazla ayrıntı için Google'ın resmi belgelerine bakın.)
### Frida ile JS ⇄ Native köprüsünü bağlama
Çoğu eklentinin Java tarafındaki giriş noktası `org.apache.cordova.CordovaPlugin.execute(...)`'dir. Bu yöntemi bağlamak, JavaScript'ten yapılan çağrıları izleme veya müdahale etme olanağı tanır:
```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);
};
});
```
---
## Güçlendirme Önerileri (2025)
* **En son platforma güncelleyin:** `cordova-android@13` (Mayıs 2024) API 34'ü hedefler ve yeni WebView önlemleri getirir.
* **Hata ayıklama kalıntılarını kaldırın:** `android:debuggable="false"` olduğundan emin olun ve yayın sürümlerinde `setWebContentsDebuggingEnabled` çağrısından kaçının.
* **Sıkı bir CSP ve AllowList uygulayın:** Her HTML dosyasına `<meta http-equiv="Content-Security-Policy" ...>` etiketi ekleyin ve `config.xml` içinde `<access>` kökenlerini kısıtlayın.
Örnek minimal CSP, satır içi betikleri engeller:
```html
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'">
```
* **Açık metin trafiğini devre dışı bırakın:** `AndroidManifest.xml` içinde `android:usesCleartextTraffic="false"` ayarlayın ve/veya TLS'yi zorlayan bir [network-security-config] sağlayın.
* **Eklenti hijyeni:**
* Eklenti sürümlerini `npm ci` ile sabitleyin ve oluşturulan `package-lock.json` dosyasını taahhüt edin.
* Periyodik olarak `npm audit`, `osv-scanner` veya `cordova-check-plugins` çalıştırın.
* **Obfuscation:** JavaScript'i Terser/UglifyJS ile küçültün ve üretim sürümlerinden kaynak haritalarını kaldırarak sıradan tersine mühendisliği yavaşlatın.
---
## Referanslar
* Apache Cordova Cordova-Android 13.0.0 sürüm notları (Mayıs 2024)
* OSV-ID MAL-2024-7845 `cordova-plugin-acuant` içindeki kötü niyetli kod
* CVE-2023-2507 CleverTap Cordova Eklentisi derin bağlantı XSS
{{#include ../banners/hacktricks-training.md}}