Electron contextIsolation RCE via preload code
Mfano 1
Mfano kutoka https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30
Msimbo huu hufungua viungo vya http(s) kwa kivinjari cha msingi:
Kitu kama file:///C:/Windows/systemd32/calc.exe
kinaweza kutumika kutekeleza kifaa cha kuhesabu, SAFE_PROTOCOLS.indexOf
inazuia hilo.
Hivyo, muhusika anaweza kuingiza msimbo huu wa JS kupitia XSS au urambazaji wa ukurasa wa kiholela:
Kwa kuwa wito kwa SAFE_PROTOCOLS.indexOf
utarudi 1337 kila wakati, mshambuliaji anaweza kukiuka ulinzi na kutekeleza kikokotoo. Exploit ya mwisho:
Angalia slaidi za asili kwa njia nyingine za kutekeleza programu bila kuuliza idhini.
Inaonekana njia nyingine ya kupakia na kutekeleza nambari ni kwa kupata kitu kama file://127.0.0.1/electron/rce.jar
Mfano 2: Discord App RCE
Mfano kutoka https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
Nilipokuwa nikichunguza skripti za kupakia, niligundua kwamba Discord inafunua kazi, ambayo inaruhusu moduli zilizoruhusiwa kuitwa kupitia DiscordNative.nativeModules.requireModule('JINA-LA-MODULE')
, kwenye ukurasa wa wavuti.
Hapa, sikweza kutumia moduli ambazo zinaweza kutumika moja kwa moja kwa RCE, kama vile moduli ya child_process, lakini niligundua namna ambapo RCE inaweza kupatikana kwa kubadilisha njia za kujengwa za JavaScript na kuingilia kati na utekelezaji wa moduli iliyofunuliwa.
Yafuatayo ni PoC. Nilithibitisha kuwa programu ya calc inatokea wakati ninap**iga simu kwa kazi ya getGPUDriverVersions
ambayo imedefiniwa katika moduli iliyoitwa "discord_utils" kutoka kwa devTools, wakati nikibadilisha RegExp.prototype.test
na Array.prototype.join
.
Funguo ya getGPUDriverVersions
inajaribu kutekeleza programu kwa kutumia maktaba ya "execa", kama ifuatavyo:
Kawaida execa jaribu kutekeleza "nvidia-smi.exe", ambayo imebainishwa katika kifungu cha nvidiaSmiPath
, hata hivyo, kutokana na RegExp.prototype.test
iliyobadilishwa na Array.prototype.join
, hoja inabadilishwa kuwa "calc" katika usindikaji wa ndani wa _execa_**.
Hasa, hoja inabadilishwa kwa kubadilisha sehemu mbili zifuatazo.
Last updated