diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index 91cfeb202..38ac231ff 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -42,8 +42,8 @@ Electron uygulaması, Node API'leri aracılığıyla **cihazı erişebilir**, an - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - varsayılan olarak kapalıdır. NodeJS'in gerçekleştirebileceği eylemleri kısıtlar. - Workers'da Node Entegrasyonu - **`nodeIntegrationInSubframes`** - varsayılan olarak kapalıdır. -- Eğer **`nodeIntegration`** **etkinleştirilirse**, bu, Electron uygulaması içindeki iframe'lerde **yüklenen web sayfalarında** **Node.js API'lerinin** kullanılmasına izin verir. -- Eğer **`nodeIntegration`** **devre dışı bırakılırsa**, o zaman preload'lar iframe içinde yüklenir. +- Eğer **`nodeIntegration`** **etkinleştirilirse**, bu, Electron uygulaması içinde **iframe'lerde** yüklü web sayfalarında **Node.js API'lerinin** kullanılmasına izin verir. +- Eğer **`nodeIntegration`** **devre dışı bırakılırsa**, o zaman preloads iframe içinde yüklenecektir. Yapılandırma örneği: ```javascript @@ -123,7 +123,7 @@ top.require("child_process").exec("open /System/Applications/Calculator.app") ## RCE: preload -Bu ayarda belirtilen script, **renderer'daki diğer scriptlerden önce yüklenir**, bu nedenle **Node API'lerine sınırsız erişimi vardır**: +Bu ayardaki script, **renderer'daki diğer scriptlerden önce yüklenir**, bu nedenle **Node API'lerine sınırsız erişime sahiptir**: ```javascript new BrowserWindow{ webPreferences: { @@ -152,7 +152,7 @@ runCalc() ## RCE: XSS + contextIsolation -_**contextIsolation**_, **web sayfası scriptleri ile JavaScript Electron'un iç kodu arasında ayrılmış bağlamlar** tanıtarak her bir kodun JavaScript yürütmesinin diğerini etkilememesini sağlar. Bu, RCE olasılığını ortadan kaldırmak için gerekli bir özelliktir. +_**contextIsolation**_, **web sayfası scriptleri ile JavaScript Electron'un iç kodu arasında ayrılmış bağlamlar** tanıtarak her bir kodun JavaScript yürütmesinin birbirini etkilememesini sağlar. Bu, RCE olasılığını ortadan kaldırmak için gerekli bir özelliktir. Eğer bağlamlar izole edilmemişse, bir saldırgan: @@ -177,13 +177,13 @@ electron-contextisolation-rce-via-ipc.md ### Tıklama olayını atlatma -Bir bağlantıya tıkladığınızda kısıtlamalar uygulanıyorsa, bunları **normal sol tıklama yerine orta tıklama yaparak** atlatabilirsiniz. +Bir bağlantıya tıkladığınızda kısıtlamalar uygulanıyorsa, bunları **normal bir sol tıklama yerine orta tıklama yaparak** atlatabilirsiniz. ```javascript window.addEventListener('click', (e) => { ``` ## RCE via shell.openExternal -Bu örnekler hakkında daha fazla bilgi için [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) ve [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/) adreslerine bakın. +Bu örnekler hakkında daha fazla bilgi için [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) ve [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/) adreslerini kontrol edin. Bir Electron masaüstü uygulaması dağıtırken, `nodeIntegration` ve `contextIsolation` için doğru ayarların sağlanması çok önemlidir. **İstemci tarafı uzaktan kod yürütme (RCE)**, ön yükleme betikleri veya ana süreçten Electron'un yerel kodunu hedef alarak bu ayarlar ile etkili bir şekilde engellenir. @@ -192,7 +192,7 @@ Bir kullanıcı bağlantılarla etkileşime girdiğinde veya yeni pencereler aç webContents.on("new-window", function (event, url, disposition, options) {} webContents.on("will-navigate", function (event, url) {} ``` -Bu dinleyiciler **masaüstü uygulaması tarafından geçersiz kılınır** ve kendi **iş mantığını** uygular. Uygulama, gidilen bir bağlantının dahili olarak mı yoksa harici bir web tarayıcısında mı açılması gerektiğini değerlendirir. Bu karar genellikle `openInternally` fonksiyonu aracılığıyla verilir. Eğer bu fonksiyon `false` dönerse, bağlantının harici olarak açılması gerektiğini belirtir ve `shell.openExternal` fonksiyonu kullanılır. +Bu dinleyiciler **masaüstü uygulaması tarafından geçersiz kılınır** ve kendi **iş mantığını** uygular. Uygulama, yönlendirilmiş bir bağlantının dahili olarak mı yoksa harici bir web tarayıcısında mı açılması gerektiğini değerlendirir. Bu karar genellikle `openInternally` adlı bir fonksiyon aracılığıyla verilir. Eğer bu fonksiyon `false` dönerse, bağlantının harici olarak açılması gerektiğini belirtir ve `shell.openExternal` fonksiyonu kullanılır. **İşte basitleştirilmiş bir pseudocode:** @@ -202,9 +202,9 @@ Bu dinleyiciler **masaüstü uygulaması tarafından geçersiz kılınır** ve k Electron JS güvenlik en iyi uygulamaları, `openExternal` fonksiyonu ile güvenilmeyen içeriğin kabul edilmemesini önerir, çünkü bu çeşitli protokoller aracılığıyla RCE'ye yol açabilir. İşletim sistemleri, RCE'yi tetikleyebilecek farklı protokolleri destekler. Bu konu hakkında daha ayrıntılı örnekler ve açıklamalar için, bu kaynağa [başvurulabilir](https://positive.security/blog/url-open-rce#windows-10-19042), bu kaynak, bu güvenlik açığını istismar edebilecek Windows protokol örneklerini içermektedir. -macOS'ta, `openExternal` fonksiyonu, `shell.openExternal('file:///System/Applications/Calculator.app')` gibi rastgele komutlar çalıştırmak için istismar edilebilir. +macos'ta, `openExternal` fonksiyonu, `shell.openExternal('file:///System/Applications/Calculator.app')` gibi rastgele komutlar çalıştırmak için istismar edilebilir. -**Windows protokol istismarlarına örnekler şunlardır:** +**Windows protokol istismarına örnekler şunlardır:** ```html