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
da6b5bcf6b
commit
823c8d90c9
@ -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>`, для читання та ексфільтрації локальних файлів. У наведеному прикладі показано, як експлуатувати цю вразливість для читання вмісту внутрішніх файлів:
|
||||
|
||||
.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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user