Translated ['src/network-services-pentesting/pentesting-web/electron-des

This commit is contained in:
Translator 2025-01-07 18:32:06 +00:00
parent 19d09e22f0
commit da6b5bcf6b

View File

@ -103,7 +103,7 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" />
```
## Electron Local Code Injection
Якщо ви можете виконати Electron App локально, можливо, ви зможете виконати довільний код JavaScript. Перевірте, як це зробити в:
Якщо ви можете виконати Electron App локально, можливо, ви зможете виконати довільний javascript код. Перевірте, як це зробити в:
{{#ref}}
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
@ -157,7 +157,7 @@ _**contextIsolation**_ вводить **окремі контексти між
Якщо контексти не ізольовані, зловмисник може:
1. Виконати **произвольний JavaScript у рендерері** (XSS або навігація на зовнішні сайти)
2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron, на власну функцію
2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron на власну функцію
3. **Запустити** використання **перезаписаної функції**
4. RCE?
@ -200,11 +200,11 @@ webContents.on("will-navigate", function (event, url) {}
![https://miro.medium.com/max/1400/1*ZfgVwT3X1V_UfjcKaAccag.png](<../../../images/image (963).png>)
Найкращі практики безпеки Electron JS радять не приймати ненадійний контент з функцією `openExternal`, оскільки це може призвести до RCE через різні протоколи. Операційні системи підтримують різні протоколи, які можуть викликати RCE. Для детальних прикладів та подальшого пояснення з цього питання можна звернутися до [цього ресурсу](https://positive.security/blog/url-open-rce#windows-10-19042), який містить приклади протоколів Windows, здатних експлуатувати цю вразливість.
Найкращі практики безпеки Electron JS радять не приймати ненадійний контент з функцією `openExternal`, оскільки це може призвести до RCE через різні протоколи. Операційні системи підтримують різні протоколи, які можуть викликати RCE. Для детальних прикладів та подальшого пояснення цієї теми можна звернутися до [цього ресурсу](https://positive.security/blog/url-open-rce#windows-10-19042), який містить приклади протоколів Windows, здатних експлуатувати цю вразливість.
У macos функцію `openExternal` можна експлуатувати для виконання довільних команд, як у `shell.openExternal('file:///System/Applications/Calculator.app')`.
**Приклади експлойтів протоколів Windows включають:**
**Приклади експлуатації протоколів Windows включають:**
```html
<script>
window.open(
@ -228,9 +228,7 @@ window.open(
**Вимкнення `contextIsolation` дозволяє використовувати `<webview>` теги**, подібно до `<iframe>`, для читання та ексфільтрації локальних файлів. Наведено приклад, який демонструє, як експлуатувати цю вразливість для читання вмісту внутрішніх файлів:
![](<../../../images/1 u1jdRYuWAEVwJmf_F2ttJg (1).png>)
Крім того, поділено ще один метод для **читання внутрішнього файлу**, що підкреслює критичну вразливість читання локальних файлів в Electron десктопному додатку. Це передбачає ін'єкцію скрипта для експлуатації програми та ексфільтрації даних:
![](<../../../images/1 u1jdRYuWAEVwJmf_F2ttJg
```html
<br /><br /><br /><br />
<h1>
@ -248,7 +246,7 @@ frames[0].document.body.innerText
```
## **RCE: XSS + Old Chromium**
Якщо **chromium**, що використовується в додатку, є **старим** і в ньому є **відомі** **вразливості**, можливо, ви зможете **використати це і отримати RCE через XSS**.\
Якщо **chromium**, що використовується в додатку, є **старим** і на ньому є **відомі** **вразливості**, можливо, ви зможете **використати це та отримати RCE через XSS**.\
Ви можете побачити приклад у цьому **writeup**: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/)
## **XSS Phishing via Internal URL regex bypass**
@ -273,12 +271,12 @@ window.open("<http://subdomainagoogleq.com/index.html>")
Модуль Electron Remote дозволяє **процесам рендерера отримувати доступ до API основного процесу**, полегшуючи комунікацію в рамках програми Electron. Однак, увімкнення цього модуля вводить значні ризики безпеки. Це розширює поверхню атаки програми, роблячи її більш вразливою до уразливостей, таких як атаки міжсайтового скриптингу (XSS).
> [!TIP]
> Хоча модуль **remote** відкриває деякі API з основного процесу для процесів рендерера, отримати RCE лише зловживаючи компонентами не так просто. Однак компоненти можуть розкривати чутливу інформацію.
> Хоча модуль **remote** відкриває деякі API з основного процесу для процесів рендерера, отримати RCE, просто зловживаючи компонентами, не так просто. Однак компоненти можуть відкривати чутливу інформацію.
> [!WARNING]
> Багато додатків, які все ще використовують модуль remote, роблять це таким чином, що **вимагає увімкнення NodeIntegration** в процесі рендерера, що є **величезним ризиком безпеки**.
З моменту виходу Electron 14 модуль `remote` Electron може бути увімкнений у кількох кроках, оскільки з причин безпеки та продуктивності **рекомендується не використовувати його**.
З версії Electron 14 модуль `remote` може бути увімкнений у кількох етапах через причини безпеки та продуктивності, тому **рекомендується не використовувати його**.
Щоб увімкнути його, спочатку потрібно **увімкнути його в основному процесі**:
```javascript
@ -358,8 +356,8 @@ console.log('Recent Places:', recentPlaces);
## **Tools**
- [**Electronegativity**](https://github.com/doyensec/electronegativity) це інструмент для виявлення неправильних налаштувань і антипатернів безпеки в додатках на базі Electron.
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) це плагін з відкритим кодом для VS Code для додатків Electron, який використовує Electronegativity.
- [**Electronegativity**](https://github.com/doyensec/electronegativity) - це інструмент для виявлення неправильних налаштувань і антипатернів безпеки в додатках на базі Electron.
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) - це плагін з відкритим кодом для VS Code для додатків Electron, який використовує Electronegativity.
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) для перевірки вразливих сторонніх бібліотек
- [**Electro.ng**](https://electro.ng/): Вам потрібно його купити
@ -397,7 +395,7 @@ npm start
- [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=8)
- [https://www.youtube.com/watch?v=a-YnG3Mx-Tg](https://www.youtube.com/watch?v=a-YnG3Mx-Tg)
- [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s)
- Більше досліджень та статей про безпеку Electron у [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking)
- Більше досліджень та статей про безпеку Electron на [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking)
- [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq&index=81)
- [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)