Translated ['src/network-services-pentesting/pentesting-web/electron-des

This commit is contained in:
Translator 2025-01-07 18:30:15 +00:00
parent d7b547df22
commit abb13dc4c2

View File

@ -36,14 +36,14 @@ Mipangilio ya **mchakato wa renderer** inaweza **kuwekwa** katika **mchakato mku
Programu ya electron **inaweza kufikia kifaa** kupitia Node apis ingawa inaweza kuwekwa ili kuzuia hilo:
- **`nodeIntegration`** - iko `off` kwa default. Ikiwa iko juu, inaruhusu kufikia vipengele vya node kutoka kwa mchakato wa renderer.
- **`contextIsolation`** - iko `on` kwa default. Ikiwa iko chini, michakato ya msingi na renderer siyo iliyotengwa.
- **`preload`** - tupu kwa default.
- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - iko off kwa default. Itapunguza vitendo ambavyo NodeJS inaweza kufanya.
- **`nodeIntegration`** - ime **zimwa** kwa chaguo-msingi. Ikiwa imewashwa, inaruhusu kufikia vipengele vya node kutoka kwa mchakato wa renderer.
- **`contextIsolation`** - ime **washwa** kwa chaguo-msingi. Ikiwa imezimwa, michakato ya msingi na renderer siyo iliyotengwa.
- **`preload`** - tupu kwa chaguo-msingi.
- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - imezimwa kwa chaguo-msingi. Itapunguza vitendo ambavyo NodeJS inaweza kufanya.
- Uunganisho wa Node katika Wafanyakazi
- **`nodeIntegrationInSubframes`** - iko `off` kwa default.
- Ikiwa **`nodeIntegration`** ime **wezeshwa**, hii itaruhusu matumizi ya **Node.js APIs** katika kurasa za wavuti ambazo zime **pakiwa katika iframes** ndani ya programu ya Electron.
- Ikiwa **`nodeIntegration`** ime **zuiliwa**, basi preloads zitawekwa katika iframe
- **`nodeIntegrationInSubframes`** - ime **zimwa** kwa chaguo-msingi.
- Ikiwa **`nodeIntegration`** ime **washwa**, hii itaruhusu matumizi ya **Node.js APIs** katika kurasa za wavuti ambazo zime **pakiwa katika iframes** ndani ya programu ya Electron.
- Ikiwa **`nodeIntegration`** ime **zimwa**, basi preloads zitawekwa katika iframe.
Mfano wa mipangilio:
```javascript
@ -111,7 +111,7 @@ Ikiwa unaweza kutekeleza programu ya Electron kwa ndani, inawezekana kwamba unaw
## RCE: XSS + nodeIntegration
Ikiwa **nodeIntegration** imewekwa **on**, JavaScript ya ukurasa wa wavuti inaweza kutumia vipengele vya Node.js kwa urahisi kwa kuita `require()`. Kwa mfano, njia ya kutekeleza programu ya calc kwenye Windows ni:
Ikiwa **nodeIntegration** imewekwa kuwa **on**, JavaScript ya ukurasa wa wavuti inaweza kutumia vipengele vya Node.js kwa urahisi kwa kuita `require()`. Kwa mfano, njia ya kutekeleza programu ya calc kwenye Windows ni:
```html
<script>
require("child_process").exec("calc")
@ -148,11 +148,11 @@ runCalc()
</script>
</body>
```
> [!NOTE] > **Ikiwa `contextIsolation` iko juu, hii haitafanya kazi**
> [!NOTE] > **Ikiwa `contextIsolation` imewashwa, hii haitafanya kazi**
## RCE: XSS + contextIsolation
_**contextIsolation**_ inanzisha **muktadha tofauti kati ya skripti za ukurasa wa wavuti na msimbo wa ndani wa JavaScript wa Electron** ili utekelezaji wa JavaScript wa kila msimbo usiathiriane. Hii ni kipengele muhimu kuondoa uwezekano wa RCE.
_**contextIsolation**_ inanzisha **muktadha tofauti kati ya skripti za ukurasa wa wavuti na msimbo wa ndani wa JavaScript wa Electron** ili utekelezaji wa JavaScript wa kila msimbo usiathiri mwingine. Hii ni kipengele muhimu kuondoa uwezekano wa RCE.
Ikiwa muktadha haujawekwa kando, mshambuliaji anaweza:
@ -175,9 +175,9 @@ electron-contextisolation-rce-via-electron-internal-code.md
electron-contextisolation-rce-via-ipc.md
{{#endref}}
### Bypass click event
### Kupita tukio la kubonyeza
Ikiwa kuna vizuizi vilivyowekwa unapobofya kiungo, huenda ukawa na uwezo wa kuvipita **ukifanya bofya katikati** badala ya bofya la kushoto la kawaida
Ikiwa kuna vizuizi vilivyowekwa unapobonyeza kiungo, huenda ukawa na uwezo wa kuvipita **ukifanya bonyeza la katikati** badala ya bonyeza la kushoto la kawaida
```javascript
window.addEventListener('click', (e) => {
```
@ -185,7 +185,7 @@ window.addEventListener('click', (e) => {
Kwa maelezo zaidi kuhusu mifano hii angalia [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) na [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/)
Wakati wa kupeleka programu ya desktop ya Electron, kuhakikisha mipangilio sahihi ya `nodeIntegration` na `contextIsolation` ni muhimu. Imeanzishwa kwamba **utendaji wa mbali wa msimbo wa mteja (RCE)** unaolenga skripti za preload au msimbo wa asili wa Electron kutoka kwa mchakato mkuu unazuia kwa ufanisi na mipangilio hii ikiwa mahali.
Wakati wa kupeleka programu ya desktop ya Electron, kuhakikisha mipangilio sahihi ya `nodeIntegration` na `contextIsolation` ni muhimu. Imeanzishwa kwamba **mteja upande wa mbali wa utekelezaji wa msimbo (RCE)** unaolenga skripti za preload au msimbo wa asili wa Electron kutoka kwa mchakato mkuu unazuia kwa ufanisi na mipangilio hii ikiwa mahali.
Wakati mtumiaji anapoingiliana na viungo au kufungua madirisha mapya, wasikilizaji maalum wa matukio huanzishwa, ambayo ni muhimu kwa usalama na utendaji wa programu:
```javascript
@ -260,9 +260,9 @@ Kwanza kabisa unahitaji kujua kinachotokea unapojaribu kufungua URL mpya, ukikag
webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below)
webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below)
```
Kito cha **`openInternally`** kitaamua kama **link** itafunguliwa katika **dirisha la desktop** kwani ni link inayomilikiwa na jukwaa, **au** kama itafunguliwa katika **browza kama rasilimali ya 3rd party**.
Kito cha **`openInternally`** kitaamua kama **kiungo** kitafunguliwa katika **dirisha la desktop** kwani ni kiungo kinachomilikiwa na jukwaa, **au** kama kitafunguliwa katika **browza kama rasilimali ya upande wa tatu**.
Katika kesi ambapo **regex** inayotumika na kazi hiyo ni **dhaifu kwa bypasses** (kwa mfano kwa **kutokuepusha alama za nukta za subdomains**) mshambuliaji anaweza kutumia XSS ili ** kufungua dirisha jipya ambalo** litakuwa katika miundombinu ya mshambuliaji **likiomba credentials** kwa mtumiaji:
Katika kesi ambapo **regex** inayotumika na kazi hiyo ni **dhaifu kwa kupita** (kwa mfano kwa **kutokuepusha nukta za subdomains**) mshambuliaji anaweza kutumia XSS ili **kufungua dirisha jipya ambalo** litakuwa katika miundombinu ya mshambuliaji **likiomba taarifa za kuingia** kwa mtumiaji:
```html
<script>
window.open("<http://subdomainagoogleq.com/index.html>")
@ -270,7 +270,7 @@ window.open("<http://subdomainagoogleq.com/index.html>")
```
## Moduli ya K remote
Moduli ya Electron Remote inaruhusu **mchakato wa renderer kufikia APIs za mchakato mkuu**, ikirahisisha mawasiliano ndani ya programu ya Electron. Hata hivyo, kuwezesha moduli hii kunaingiza hatari kubwa za usalama. Inapanua uso wa shambulio la programu, na kuifanya kuwa nyeti zaidi kwa udhaifu kama vile mashambulizi ya cross-site scripting (XSS).
Moduli ya Electron Remote inaruhusu **mchakato wa renderer kufikia APIs za mchakato mkuu**, ikirahisisha mawasiliano ndani ya programu ya Electron. Hata hivyo, kuwezesha moduli hii kunaingiza hatari kubwa za usalama. Inapanua uso wa shambulio wa programu, na kuifanya iwe rahisi zaidi kwa udhaifu kama vile mashambulizi ya cross-site scripting (XSS).
> [!TIP]
> Ingawa moduli ya **remote** inafichua baadhi ya APIs kutoka kwa mchakato mkuu hadi kwa mchakato wa renderer, si rahisi kupata RCE kwa kutumia tu vipengele. Hata hivyo, vipengele vinaweza kufichua taarifa nyeti.
@ -337,14 +337,14 @@ console.log('Recent Places:', recentPlaces);
### **subscribeNotification / subscribeWorkspaceNotification**
* **Inasikiliza** **arifa za asili za macOS** kwa kutumia NSDistributedNotificationCenter.
* Kabla ya **macOS Catalina**, ungeweza kunusa **arifa zote** zilizotolewa kwa kupitisha **nil** kwa CFNotificationCenterAddObserver.
* Kabla ya **macOS Catalina**, ungeweza kunusa **zote** arifa zilizogawanywa kwa kupitisha **nil** kwa CFNotificationCenterAddObserver.
* Baada ya **Catalina / Big Sur**, programu zilizowekwa kwenye sanduku zinaweza bado **kujiandikisha** kwa **matukio mengi** (kwa mfano, **kufungwa/kufunguliwa kwa skrini**, **kuwekwa kwa sauti**, **shughuli za mtandao**, nk.) kwa kujiandikisha arifa **kwa jina**.
### **getUserDefault / setUserDefault**
* **Inashirikiana** na **NSUserDefaults**, ambayo inahifadhi **mapendeleo** ya **programu** au **ya ulimwengu** kwenye macOS.
* **Inawasiliana** na **NSUserDefaults**, ambayo inahifadhi **mapendeleo** ya **programu** au **ya ulimwengu** kwenye macOS.
* **getUserDefault** inaweza **kurejesha** taarifa nyeti, kama vile **mahali pa faili za hivi karibuni** au **mahali pa kijiografia ya mtumiaji**.
* **getUserDefault** inaweza **kurejesha** taarifa nyeti, kama vile **mahali pa faili za hivi karibuni** au **mahali pa kijiografia la mtumiaji**.
* **setUserDefault** inaweza **kubadilisha** mapendeleo haya, ambayo yanaweza kuathiri **mipangilio** ya programu.