mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/electron-des
This commit is contained in:
parent
19d09e22f0
commit
da6b5bcf6b
@ -103,7 +103,7 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" />
|
|||||||
```
|
```
|
||||||
## Electron Local Code Injection
|
## Electron Local Code Injection
|
||||||
|
|
||||||
Якщо ви можете виконати Electron App локально, можливо, ви зможете виконати довільний код JavaScript. Перевірте, як це зробити в:
|
Якщо ви можете виконати Electron App локально, можливо, ви зможете виконати довільний javascript код. Перевірте, як це зробити в:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
|
../../../macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md
|
||||||
@ -157,7 +157,7 @@ _**contextIsolation**_ вводить **окремі контексти між
|
|||||||
Якщо контексти не ізольовані, зловмисник може:
|
Якщо контексти не ізольовані, зловмисник може:
|
||||||
|
|
||||||
1. Виконати **произвольний JavaScript у рендерері** (XSS або навігація на зовнішні сайти)
|
1. Виконати **произвольний JavaScript у рендерері** (XSS або навігація на зовнішні сайти)
|
||||||
2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron, на власну функцію
|
2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron на власну функцію
|
||||||
3. **Запустити** використання **перезаписаної функції**
|
3. **Запустити** використання **перезаписаної функції**
|
||||||
4. RCE?
|
4. RCE?
|
||||||
|
|
||||||
@ -200,11 +200,11 @@ webContents.on("will-navigate", function (event, url) {}
|
|||||||
|
|
||||||
.png>)
|
.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')`.
|
У macos функцію `openExternal` можна експлуатувати для виконання довільних команд, як у `shell.openExternal('file:///System/Applications/Calculator.app')`.
|
||||||
|
|
||||||
**Приклади експлойтів протоколів Windows включають:**
|
**Приклади експлуатації протоколів Windows включають:**
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
window.open(
|
window.open(
|
||||||
@ -228,9 +228,7 @@ window.open(
|
|||||||
|
|
||||||
**Вимкнення `contextIsolation` дозволяє використовувати `<webview>` теги**, подібно до `<iframe>`, для читання та ексфільтрації локальних файлів. Наведено приклад, який демонструє, як експлуатувати цю вразливість для читання вмісту внутрішніх файлів:
|
**Вимкнення `contextIsolation` дозволяє використовувати `<webview>` теги**, подібно до `<iframe>`, для читання та ексфільтрації локальних файлів. Наведено приклад, який демонструє, як експлуатувати цю вразливість для читання вмісту внутрішніх файлів:
|
||||||
|
|
||||||
.png>)
|

|
Ви можете побачити приклад у цьому **writeup**: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/)
|
||||||
|
|
||||||
## **XSS Phishing via Internal URL regex bypass**
|
## **XSS Phishing via Internal URL regex bypass**
|
||||||
@ -273,12 +271,12 @@ window.open("<http://subdomainagoogleq.com/index.html>")
|
|||||||
Модуль Electron Remote дозволяє **процесам рендерера отримувати доступ до API основного процесу**, полегшуючи комунікацію в рамках програми Electron. Однак, увімкнення цього модуля вводить значні ризики безпеки. Це розширює поверхню атаки програми, роблячи її більш вразливою до уразливостей, таких як атаки міжсайтового скриптингу (XSS).
|
Модуль Electron Remote дозволяє **процесам рендерера отримувати доступ до API основного процесу**, полегшуючи комунікацію в рамках програми Electron. Однак, увімкнення цього модуля вводить значні ризики безпеки. Це розширює поверхню атаки програми, роблячи її більш вразливою до уразливостей, таких як атаки міжсайтового скриптингу (XSS).
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> Хоча модуль **remote** відкриває деякі API з основного процесу для процесів рендерера, отримати RCE лише зловживаючи компонентами не так просто. Однак компоненти можуть розкривати чутливу інформацію.
|
> Хоча модуль **remote** відкриває деякі API з основного процесу для процесів рендерера, отримати RCE, просто зловживаючи компонентами, не так просто. Однак компоненти можуть відкривати чутливу інформацію.
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Багато додатків, які все ще використовують модуль remote, роблять це таким чином, що **вимагає увімкнення NodeIntegration** в процесі рендерера, що є **величезним ризиком безпеки**.
|
> Багато додатків, які все ще використовують модуль remote, роблять це таким чином, що **вимагає увімкнення NodeIntegration** в процесі рендерера, що є **величезним ризиком безпеки**.
|
||||||
|
|
||||||
З моменту виходу Electron 14 модуль `remote` Electron може бути увімкнений у кількох кроках, оскільки з причин безпеки та продуктивності **рекомендується не використовувати його**.
|
З версії Electron 14 модуль `remote` може бути увімкнений у кількох етапах через причини безпеки та продуктивності, тому **рекомендується не використовувати його**.
|
||||||
|
|
||||||
Щоб увімкнути його, спочатку потрібно **увімкнути його в основному процесі**:
|
Щоб увімкнути його, спочатку потрібно **увімкнути його в основному процесі**:
|
||||||
```javascript
|
```javascript
|
||||||
@ -358,8 +356,8 @@ console.log('Recent Places:', recentPlaces);
|
|||||||
|
|
||||||
## **Tools**
|
## **Tools**
|
||||||
|
|
||||||
- [**Electronegativity**](https://github.com/doyensec/electronegativity) — це інструмент для виявлення неправильних налаштувань і антипатернів безпеки в додатках на базі Electron.
|
- [**Electronegativity**](https://github.com/doyensec/electronegativity) - це інструмент для виявлення неправильних налаштувань і антипатернів безпеки в додатках на базі Electron.
|
||||||
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) — це плагін з відкритим кодом для VS Code для додатків Electron, який використовує Electronegativity.
|
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) - це плагін з відкритим кодом для VS Code для додатків Electron, який використовує Electronegativity.
|
||||||
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) для перевірки вразливих сторонніх бібліотек
|
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) для перевірки вразливих сторонніх бібліотек
|
||||||
- [**Electro.ng**](https://electro.ng/): Вам потрібно його купити
|
- [**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://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=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)
|
- [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://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)
|
- [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user