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

This commit is contained in:
Translator 2025-01-07 18:44:12 +00:00
parent da6b5bcf6b
commit 823c8d90c9

View File

@ -97,7 +97,7 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" />
```
### Capture traffic
Змініть конфігурацію start-main і додайте використання проксі, такого як:
Змініть конфігурацію start-main і додайте використання проксі, наприклад:
```javascript
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
```
@ -157,8 +157,8 @@ _**contextIsolation**_ вводить **окремі контексти між
Якщо контексти не ізольовані, зловмисник може:
1. Виконати **произвольний JavaScript у рендерері** (XSS або навігація на зовнішні сайти)
2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron на власну функцію
3. **Запустити** використання **перезаписаної функції**
2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron, на власну функцію
3. **Викликати** використання **перезаписаної функції**
4. RCE?
Є 2 місця, де вбудовані методи можуть бути перезаписані: у коді preload або у внутрішньому коді Electron:
@ -204,7 +204,7 @@ webContents.on("will-navigate", function (event, url) {}
У macos функцію `openExternal` можна експлуатувати для виконання довільних команд, як у `shell.openExternal('file:///System/Applications/Calculator.app')`.
**Приклади експлуатації протоколів Windows включають:**
**Приклади експлойтів протоколів Windows включають:**
```html
<script>
window.open(
@ -226,9 +226,11 @@ window.open(
```
## Читання внутрішніх файлів: XSS + contextIsolation
**Вимкнення `contextIsolation` дозволяє використовувати `<webview>` теги**, подібно до `<iframe>`, для читання та ексфільтрації локальних файлів. Наведено приклад, який демонструє, як експлуатувати цю вразливість для читання вмісту внутрішніх файлів:
**Вимкнення `contextIsolation` дозволяє використовувати `<webview>` теги**, подібно до `<iframe>`, для читання та ексфільтрації локальних файлів. У наведеному прикладі показано, як експлуатувати цю вразливість для читання вмісту внутрішніх файлів:
![](<../../../images/1 u1jdRYuWAEVwJmf_F2ttJg
![](<../../../images/1 u1jdRYuWAEVwJmf_F2ttJg (1).png>)
Крім того, подається ще один метод для **читання внутрішнього файлу**, що підкреслює критичну вразливість читання локальних файлів в Electron десктопному додатку. Це передбачає ін'єкцію скрипта для експлуатації програми та ексфільтрації даних:
```html
<br /><br /><br /><br />
<h1>
@ -246,7 +248,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**
@ -268,15 +270,15 @@ window.open("<http://subdomainagoogleq.com/index.html>")
```
## Remote module
Модуль Electron Remote дозволяє **процесам рендерера отримувати доступ до API основного процесу**, полегшуючи комунікацію в рамках програми Electron. Однак, увімкнення цього модуля вводить значні ризики безпеки. Це розширює поверхню атаки програми, роблячи її більш вразливою до уразливостей, таких як атаки міжсайтового скриптингу (XSS).
Модуль Electron Remote дозволяє **процесам рендеринга отримувати доступ до API основного процесу**, полегшуючи комунікацію в рамках програми Electron. Однак, увімкнення цього модуля вводить значні ризики безпеки. Це розширює поверхню атаки програми, роблячи її більш вразливою до уразливостей, таких як атаки міжсайтового скриптингу (XSS).
> [!TIP]
> Хоча модуль **remote** відкриває деякі API з основного процесу для процесів рендерера, отримати RCE, просто зловживаючи компонентами, не так просто. Однак компоненти можуть відкривати чутливу інформацію.
> Хоча модуль **remote** відкриває деякі API з основного процесу для процесів рендеринга, отримати RCE, просто зловживаючи компонентами, не так просто. Однак компоненти можуть розкривати чутливу інформацію.
> [!WARNING]
> Багато додатків, які все ще використовують модуль remote, роблять це таким чином, що **вимагає увімкнення NodeIntegration** в процесі рендерера, що є **величезним ризиком безпеки**.
> Багато додатків, які все ще використовують модуль remote, роблять це таким чином, що **вимагає увімкнення NodeIntegration** в процесі рендеринга, що є **величезним ризиком безпеки**.
З версії Electron 14 модуль `remote` може бути увімкнений у кількох етапах через причини безпеки та продуктивності, тому **рекомендується не використовувати його**.
З моменту виходу Electron 14 модуль `remote` Electron може бути увімкнений у кількох етапах, оскільки з причин безпеки та продуктивності **рекомендується не використовувати його**.
Щоб увімкнути його, спочатку потрібно **увімкнути його в основному процесі**:
```javascript
@ -336,7 +338,7 @@ console.log('Recent Places:', recentPlaces);
* **Слухає** **рідні macOS сповіщення** за допомогою NSDistributedNotificationCenter.
* Перед **macOS Catalina** ви могли перехоплювати **всі** розподілені сповіщення, передаючи **nil** до CFNotificationCenterAddObserver.
* Після **Catalina / Big Sur** пісочничні додатки все ще можуть **підписуватися** на **багато подій** (наприклад, **блокування/розблокування екрану**, **монтування томів**, **мережеву активність** тощо) реєструючи сповіщення **за назвою**.
* Після **Catalina / Big Sur** пісочниці додатки все ще можуть **підписуватися** на **багато подій** (наприклад, **блокування/розблокування екрану**, **монтування томів**, **мережеву активність** тощо) реєструючи сповіщення **за назвою**.
### **getUserDefault / setUserDefault**
@ -354,12 +356,24 @@ console.log('Recent Places:', recentPlaces);
Для отримання додаткової інформації перегляньте [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
## Content Security Policy
Додатки Electron повинні мати **Політику безпеки контенту (CSP)** для **запобігання XSS-атакам**. **CSP** є **стандартом безпеки**, який допомагає **запобігти** **виконанню** **недовіреного коду** в браузері.
Зазвичай **конфігурується** у файлі **`main.js`** або в шаблоні **`index.html`** з CSP всередині **мета-тегу**.
Для отримання додаткової інформації перегляньте:
{{#ref}}
pentesting-web/content-security-policy-csp-bypass/
{{#endref}}
## **Tools**
- [**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/): Вам потрібно його купити
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) для перевірки вразливих сторонніх бібліотек.
- [**Electro.ng**](https://electro.ng/): Вам потрібно його купити.
## Labs