Electron contextIsolation RCE via preload code
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Example 1
Цей код відкриває http(s) посилання в браузері за замовчуванням:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-794f5c4c2e6f4aa98087152c80f3c5f9813212c3%252Fimage%2520%28768%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=710e52c8&sv=1)
Щось на кшталт file:///C:/Windows/systemd32/calc.exe
може бути використано для виконання калькулятора, SAFE_PROTOCOLS.indexOf
запобігає цьому.
Отже, зловмисник може впровадити цей JS код через XSS або довільну навігацію на сторінці:
Оскільки виклик до SAFE_PROTOCOLS.indexOf
завжди поверне 1337, зловмисник може обійти захист і виконати calc. Остаточний експлойт:
Перевірте оригінальні слайди на наявність інших способів виконання програм без запиту дозволів.
Очевидно, ще один спосіб завантажити та виконати код - це отримати доступ до чогось на зразок file://127.0.0.1/electron/rce.jar
Приклад 2: RCE додатку Discord
Приклад з https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1
Перевіряючи скрипти попереднього завантаження, я виявив, що Discord відкриває функцію, яка дозволяє викликати деякі дозволені модулі через DiscordNative.nativeModules.requireModule('MODULE-NAME')
, на веб-сторінці.
Тут я не міг використовувати модулі, які можуть бути використані для RCE безпосередньо, такі як child_process модуль, але я знайшов код, де RCE може бути досягнуто шляхом перевизначення вбудованих методів JavaScript та втручання у виконання відкритого модуля.
Наступне - це PoC. Я зміг підтвердити, що додаток calc з'являється, коли я викликаю функцію getGPUDriverVersions
, яка визначена в модулі під назвою "discord_utils" з devTools, при цьому перевизначаючи RegExp.prototype.test
та Array.prototype.join
.
Функція getGPUDriverVersions
намагається виконати програму, використовуючи бібліотеку "execa", як показано нижче:
Зазвичай execa намагається виконати "nvidia-smi.exe", який вказаний у змінній nvidiaSmiPath
, однак, через переоприділений RegExp.prototype.test
та Array.prototype.join
, аргумент замінюється на "calc" у внутрішній обробці _execa_**.
Конкретно, аргумент замінюється шляхом зміни наступних двох частин.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated