Electron contextIsolation RCE via preload code
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ten kod otwiera linki http(s) w domyślnym przeglądarki:
Coś takiego jak file:///C:/Windows/systemd32/calc.exe
mogłoby być użyte do uruchomienia kalkulatora, SAFE_PROTOCOLS.indexOf
to uniemożliwia.
Dlatego atakujący mógłby wstrzyknąć ten kod JS za pomocą XSS lub dowolnej nawigacji po stronie:
Ponieważ wywołanie SAFE_PROTOCOLS.indexOf
zawsze zwróci 1337, atakujący może obejść ochronę i wykonać kalkulator. Ostateczny exploit:
Sprawdź oryginalne slajdy, aby znaleźć inne sposoby uruchamiania programów bez wyświetlania monitu o pozwolenie.
Najwyraźniej innym sposobem na załadowanie i wykonanie kodu jest dostęp do czegoś takiego jak file://127.0.0.1/electron/rce.jar
Przykład z https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
Podczas sprawdzania skryptów preload odkryłem, że Discord udostępnia funkcję, która pozwala na wywoływanie niektórych dozwolonych modułów za pomocą DiscordNative.nativeModules.requireModule('MODULE-NAME')
na stronie internetowej.
Tutaj nie mogłem użyć modułów, które mogą być używane do RCE bezpośrednio, takich jak moduł child_process, ale znalazłem kod, w którym RCE można osiągnąć przez nadpisanie wbudowanych metod JavaScript i ingerencję w wykonanie udostępnionego modułu.
Poniżej znajduje się PoC. Udało mi się potwierdzić, że aplikacja calc jest wywoływana, gdy wywołuję funkcję getGPUDriverVersions
, która jest zdefiniowana w module o nazwie "discord_utils" z devTools, podczas nadpisywania RegExp.prototype.test
i Array.prototype.join
.
Funkcja getGPUDriverVersions
próbuje wykonać program, używając biblioteki "execa", jak poniżej:
Zwykle execa próbuje wykonać "nvidia-smi.exe", który jest określony w zmiennej nvidiaSmiPath
, jednak z powodu nadpisanego RegExp.prototype.test
i Array.prototype.join
, argument jest zastępowany na "calc" w wewnętrznym przetwarzaniu _execa_**.
Specyficznie, argument jest zastępowany poprzez zmianę następujących dwóch części.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)