Electron contextIsolation RCE via preload code
Örnek 1
Örnek https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=30 adresinden alınmıştır.
Bu kod, http(s) bağlantılarını varsayılan tarayıcıda açar:
file:///C:/Windows/systemd32/calc.exe
gibi bir şey, bir hesap makinesini çalıştırmak için kullanılabilir, ancak SAFE_PROTOCOLS.indexOf
bunu engelliyor.
Bu nedenle, bir saldırgan bu JS kodunu XSS veya keyfi sayfa gezintisi yoluyla enjekte edebilir:
Yapılan SAFE_PROTOCOLS.indexOf
çağrısı her zaman 1337 döndüreceğinden, saldırgan korumayı atlayabilir ve hesap makinesini çalıştırabilir. Son saldırı:
Diğer izin istemeyen programları çalıştırmak için diğer yolları kontrol edin.
Görünüşe göre kod yükleme ve çalıştırma başka bir yol da file://127.0.0.1/electron/rce.jar
gibi bir şeye erişmektir.
Örnek 2: Discord Uygulaması Uzaktan Kod Çalıştırma (RCE)
Örnek https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1 adresinden alınmıştır.
Preload betiklerini kontrol ettiğimde, Discord'un web sayfasına DiscordNative.nativeModules.requireModule('MODULE-NAME')
aracılığıyla bazı izin verilen modüllere erişime izin veren bir işlevi açığa çıkardığını buldum.
Burada, doğrudan RCE için kullanılabilecek modülleri kullanamadım, örneğin child_process modülü gibi, ancak JavaScript yerleşik yöntemlerinin üzerine yazılarak ve açığa çıkarılan modülün yürütmesine müdahale edilerek RCE'nin elde edilebileceği bir kod buldum.
Aşağıdaki PoC'dir. DevTools'dan "discord_utils" adlı modülde tanımlanan getGPUDriverVersions
işlevini çağırırken RegExp.prototype.test
ve Array.prototype.join
yöntemlerini geçersiz kılarak RCE'nin gerçekleştirilebildiğini doğrulayabildim.
getGPUDriverVersions
işlevi, aşağıdaki gibi "execa" kitaplığını kullanarak programı çalıştırmaya çalışır:
Genellikle execa, nvidiaSmiPath
değişkeninde belirtilen "nvidia-smi.exe"'yi çalıştırmaya çalışır, ancak üzerine yazılmış RegExp.prototype.test
ve Array.prototype.join
nedeniyle argüman, _execa'nın iç işleme**sinde "calc" olarak değiştirilir.
Özellikle, argüman aşağıdaki iki kısım değiştirilerek değiştirilir.
Last updated