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

This commit is contained in:
Translator 2025-01-07 18:45:02 +00:00
parent abb13dc4c2
commit 9862cd2828

View File

@ -20,11 +20,11 @@ Katika msimbo wa chanzo wa programu ya Electron, ndani ya `packet.json`, unaweza
Electron ina aina 2 za michakato:
- Michakato Kuu (ina ufikiaji kamili wa NodeJS)
- Michakato ya Renderer (inapaswa kuwa na ufikiaji wa NodeJS uliozuiliwa kwa sababu za usalama)
- Michakato ya Kuweka (inapaswa kuwa na ufikiaji wa NodeJS uliozuiliwa kwa sababu za usalama)
![](<../../../images/image (182).png>)
**mchakato wa renderer** utakuwa dirisha la kivinjari linalopakia faili:
**mchakato wa kuweka** utakuwa dirisha la kivinjari linalopakia faili:
```javascript
const { BrowserWindow } = require("electron")
let win = new BrowserWindow()
@ -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`** - 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.
- **`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.
- Uunganisho wa Node katika Wafanyakazi
- **`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.
- **`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
Mfano wa mipangilio:
```javascript
@ -123,7 +123,7 @@ top.require("child_process").exec("open /System/Applications/Calculator.app")
## RCE: preload
Scripti iliyoonyeshwa katika mipangilio hii inachukuliwa **kabla ya scripti nyingine katika renderer**, hivyo ina **ufikiaji usio na kikomo kwa Node APIs**:
Script iliyoonyeshwa katika mipangilio hii inachukuliwa **kabla ya scripts nyingine katika renderer**, hivyo ina **ufikiaji usio na kikomo kwa Node APIs**:
```javascript
new BrowserWindow{
webPreferences: {
@ -148,20 +148,20 @@ runCalc()
</script>
</body>
```
> [!NOTE] > **Ikiwa `contextIsolation` imewashwa, hii haitafanya kazi**
> [!NOTE] > **Ikiwa `contextIsolation` iko juu, 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 usiathiri mwingine. 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 usiathiriane. Hii ni kipengele muhimu kuondoa uwezekano wa RCE.
Ikiwa muktadha haujawekwa kando, mshambuliaji anaweza:
1. Kutekeleza **JavaScript isiyo na mipaka katika renderer** (XSS au kuhamia kwenye tovuti za nje)
2. **Kufuta njia iliyojengwa ndani** ambayo inatumika katika preload au msimbo wa ndani wa Electron kwa kazi yake
2. **Kufuta njia iliyojengwa** ambayo inatumika katika preload au msimbo wa ndani wa Electron kwa kazi yake
3. **Kusababisha** matumizi ya **kazi iliyofutwa**
4. RCE?
Kuna maeneo 2 ambapo njia zilizojengwa ndani zinaweza kufutwa: Katika msimbo wa preload au katika msimbo wa ndani wa Electron:
Kuna maeneo 2 ambapo njia zilizojengwa zinaweza kufutwa: Katika msimbo wa preload au katika msimbo wa ndani wa Electron:
{{#ref}}
electron-contextisolation-rce-via-preload-code.md
@ -248,12 +248,12 @@ frames[0].document.body.innerText
```
## **RCE: XSS + Old Chromium**
Ikiwa **chromium** inayotumiwa na programu ni **ya zamani** na kuna **udhaifu** **ujulikanao** juu yake, inaweza kuwa inawezekana **kuikabili na kupata RCE kupitia XSS**.\
Ikiwa **chromium** inayotumiwa na programu ni **ya zamani** na kuna **vulnerabilities** **zinazojulikana** juu yake, inaweza kuwa inawezekana **kuikabili na kupata RCE kupitia XSS**.\
Unaweza kuona mfano katika **writeup** hii: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/)
## **XSS Phishing kupitia Internal URL regex bypass**
Kukisia umepata XSS lakini huwezi **kuanzisha RCE au kuiba faili za ndani**, unaweza kujaribu kuitumia **kuiba akidi kupitia phishing**.
Kukisia umepata XSS lakini **huwezi kuanzisha RCE au kuiba faili za ndani** unaweza kujaribu kuitumia **kuiba akidi kupitia phishing**.
Kwanza kabisa unahitaji kujua kinachotokea unapojaribu kufungua URL mpya, ukikagua msimbo wa JS katika front-end:
```javascript
@ -268,9 +268,9 @@ Katika kesi ambapo **regex** inayotumika na kazi hiyo ni **dhaifu kwa kupita** (
window.open("<http://subdomainagoogleq.com/index.html>")
</script>
```
## Moduli ya K remote
## Remote module
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).
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 kuwa na uwezekano mkubwa wa 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.
@ -352,16 +352,28 @@ console.log('Recent Places:', recentPlaces);
## Shell.showItemInFolder
Kazi hii inaonyesha faili iliyotolewa katika meneja wa faili, ambayo **inaweza kutekeleza faili hiyo kiotomatiki**.
Hii ni kazi inayonyesha faili iliyotolewa katika meneja wa faili, ambayo **inaweza kutekeleza faili hiyo kiotomatiki**.
Kwa maelezo zaidi angalia [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
## Content Security Policy
Programu za Electron zinapaswa kuwa na **Content Security Policy (CSP)** ili **kuzuia mashambulizi ya XSS**. **CSP** ni **kiwango cha usalama** ambacho husaidia **kuzuia** **utekelezaji** wa **kanuni zisizoaminika** kwenye kivinjari.
Kawaida **inasanidiwa** katika faili ya **`main.js`** au katika template ya **`index.html`** na CSP ndani ya **meta tag**.
Kwa maelezo zaidi angalia:
{{#ref}}
pentesting-web/content-security-policy-csp-bypass/
{{#endref}}
## **Tools**
- [**Electronegativity**](https://github.com/doyensec/electronegativity) ni chombo cha kutambua makosa ya usanidi na mifano ya usalama isiyofaa katika programu za msingi za Electron.
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) ni nyongeza ya chanzo wazi ya VS Code kwa programu za Electron inayotumia Electronegativity.
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) ni plugin ya chanzo wazi ya VS Code kwa programu za Electron inayotumia Electronegativity.
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) kuangalia maktaba za wahusika wa tatu zenye udhaifu
- [**Electro.ng**](https://electro.ng/): Unahitaji kuununua
- [**Electro.ng**](https://electro.ng/): Unahitaji kuzinunua
## Labs