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
f91689fd45
commit
19f998ec1b
@ -1,4 +1,4 @@
|
||||
# Aplikacje desktopowe Electron
|
||||
# Aplikacje Desktopowe Electron
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@ -32,14 +32,14 @@ let win = new BrowserWindow()
|
||||
//Open Renderer Process
|
||||
win.loadURL(`file://path/to/index.html`)
|
||||
```
|
||||
Ustawienia **procesu renderera** mogą być **konfigurowane** w **procesie głównym** w pliku main.js. Niektóre z konfiguracji **zapobiegną uzyskaniu RCE** lub innych luk w zabezpieczeniach, jeśli **ustawienia są poprawnie skonfigurowane**.
|
||||
Ustawienia **procesu renderera** mogą być **konfigurowane** w **procesie głównym** w pliku main.js. Niektóre z konfiguracji **zapobiegną uzyskaniu RCE przez aplikację Electron** lub inne podatności, jeśli **ustawienia są poprawnie skonfigurowane**.
|
||||
|
||||
Aplikacja electron **może uzyskać dostęp do urządzenia** za pomocą interfejsów API Node, chociaż można ją skonfigurować, aby temu zapobiec:
|
||||
Aplikacja Electron **może uzyskać dostęp do urządzenia** za pomocą interfejsów API Node, chociaż można ją skonfigurować, aby temu zapobiec:
|
||||
|
||||
- **`nodeIntegration`** - jest `wyłączone` domyślnie. Jeśli włączone, pozwala na dostęp do funkcji node z procesu renderera.
|
||||
- **`contextIsolation`** - jest `włączone` domyślnie. Jeśli wyłączone, procesy główny i renderera nie są izolowane.
|
||||
- **`preload`** - domyślnie puste.
|
||||
- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - jest wyłączone domyślnie. Ograniczy to działania, które NodeJS może wykonać.
|
||||
- **`preload`** - pusty domyślnie.
|
||||
- [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - jest wyłączone domyślnie. Ograniczy działania, które NodeJS może wykonać.
|
||||
- Integracja Node w Workerach
|
||||
- **`nodeIntegrationInSubframes`** - jest `wyłączone` domyślnie.
|
||||
- Jeśli **`nodeIntegration`** jest **włączone**, umożliwi to korzystanie z **API Node.js** na stronach internetowych, które są **ładowane w iframe** w aplikacji Electron.
|
||||
@ -97,7 +97,7 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" />
|
||||
```
|
||||
### Capture traffic
|
||||
|
||||
Zmień konfigurację start-main i dodaj użycie proxy, takiego jak:
|
||||
Zmodyfikuj konfigurację start-main i dodaj użycie proxy, takiego jak:
|
||||
```javascript
|
||||
"start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors",
|
||||
```
|
||||
@ -230,7 +230,7 @@ window.open(
|
||||
|
||||
.png>)
|
||||
|
||||
Ponadto, udostępniana jest inna metoda **odczytu wewnętrznego pliku**, podkreślająca krytyczną lukę w odczycie lokalnych plików w aplikacji desktopowej Electron. Polega to na wstrzyknięciu skryptu w celu wykorzystania aplikacji i eksfiltracji danych:
|
||||
Ponadto, udostępniona jest inna metoda **odczytu wewnętrznego pliku**, podkreślająca krytyczną lukę w odczycie lokalnych plików w aplikacji desktopowej Electron. Polega to na wstrzyknięciu skryptu w celu wykorzystania aplikacji i eksfiltracji danych:
|
||||
```html
|
||||
<br /><br /><br /><br />
|
||||
<h1>
|
||||
@ -248,14 +248,14 @@ frames[0].document.body.innerText
|
||||
```
|
||||
## **RCE: XSS + Stary Chromium**
|
||||
|
||||
Jeśli **chromium** używane przez aplikację jest **stare** i istnieją **znane** **luki** w zabezpieczeniach, może być możliwe **wykorzystanie tego i uzyskanie RCE przez XSS**.\
|
||||
Jeśli **chromium** używane przez aplikację jest **stare** i istnieją **znane** **luki** w nim, może być możliwe **wykorzystanie tego i uzyskanie RCE przez XSS**.\
|
||||
Możesz zobaczyć przykład w tym **opisie**: [https://blog.electrovolt.io/posts/discord-rce/](https://blog.electrovolt.io/posts/discord-rce/)
|
||||
|
||||
## **Phishing XSS za pomocą obejścia regex URL wewnętrznego**
|
||||
|
||||
Zakładając, że znalazłeś XSS, ale **nie możesz wywołać RCE ani ukraść wewnętrznych plików**, możesz spróbować wykorzystać to do **kradzieży poświadczeń za pomocą phishingu**.
|
||||
Zakładając, że znalazłeś XSS, ale **nie możesz wywołać RCE ani ukraść plików wewnętrznych**, możesz spróbować wykorzystać to do **kradzieży poświadczeń za pomocą phishingu**.
|
||||
|
||||
Przede wszystkim musisz wiedzieć, co się dzieje, gdy próbujesz otworzyć nowy URL, sprawdzając kod JS w interfejsie użytkownika:
|
||||
Przede wszystkim musisz wiedzieć, co się dzieje, gdy próbujesz otworzyć nowy URL, sprawdzając kod JS w interfejsie:
|
||||
```javascript
|
||||
webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below)
|
||||
webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below)
|
||||
@ -291,7 +291,7 @@ mainWindow = new BrowserWindow({
|
||||
})
|
||||
remoteMain.enable(mainWindow.webContents)
|
||||
```
|
||||
Następnie proces renderera może importować obiekty z modułu, który lubi:
|
||||
Następnie proces renderera może importować obiekty z modułu, tak jak:
|
||||
```javascript
|
||||
import { dialog, getCurrentWindow } from '@electron/remote'
|
||||
```
|
||||
@ -321,7 +321,7 @@ Native.app.exit()
|
||||
|
||||
Główne API do uzyskiwania dostępu do preferencji systemowych i emitowania zdarzeń systemowych w Electron. Metody takie jak **subscribeNotification**, **subscribeWorkspaceNotification**, **getUserDefault** i **setUserDefault** są wszystkie **częścią** tego modułu.
|
||||
|
||||
**Przykład użycia:**
|
||||
**Example usage:**
|
||||
```javascript
|
||||
const { systemPreferences } = require('electron');
|
||||
|
||||
@ -336,13 +336,13 @@ console.log('Recent Places:', recentPlaces);
|
||||
```
|
||||
### **subscribeNotification / subscribeWorkspaceNotification**
|
||||
|
||||
* **Nasłuchuje** **powiadomień natywnych macOS** za pomocą NSDistributedNotificationCenter.
|
||||
* Przed **macOS Catalina** można było podsłuchiwać **wszystkie** powiadomienia rozproszone, przekazując **nil** do CFNotificationCenterAddObserver.
|
||||
* Po **Catalina / Big Sur** aplikacje w piaskownicy mogą nadal **subskrybować** **wiele zdarzeń** (na przykład, **blokady/odblokowania ekranu**, **montowanie woluminów**, **aktywność sieciowa** itp.) rejestrując powiadomienia **po nazwie**.
|
||||
* **Nasłuchuje** **natychmiastowych powiadomień macOS** za pomocą NSDistributedNotificationCenter.
|
||||
* Przed **macOS Catalina** można było podsłuchiwać **wszystkie** rozproszone powiadomienia, przekazując **nil** do CFNotificationCenterAddObserver.
|
||||
* Po **Catalina / Big Sur** aplikacje w piaskownicy mogą nadal **subskrybować** **wiele zdarzeń** (na przykład **blokady/odblokowania ekranu**, **montowanie woluminów**, **aktywność sieciowa** itp.) rejestrując powiadomienia **po nazwie**.
|
||||
|
||||
### **getUserDefault / setUserDefault**
|
||||
|
||||
* **Interfejsy** z **NSUserDefaults**, które przechowują **preferencje** aplikacji lub **globalne** na macOS.
|
||||
* **Interfejsuje** z **NSUserDefaults**, który przechowuje **preferencje** aplikacji lub **globalne** na macOS.
|
||||
|
||||
* **getUserDefault** może **pobierać** wrażliwe informacje, takie jak **ostatnie lokalizacje plików** lub **geograficzna lokalizacja użytkownika**.
|
||||
|
||||
@ -356,14 +356,26 @@ Ta funkcja wyświetla dany plik w menedżerze plików, co **może automatycznie
|
||||
|
||||
Aby uzyskać więcej informacji, sprawdź [https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html](https://blog.doyensec.com/2021/02/16/electron-apis-misuse.html)
|
||||
|
||||
## **Narzędzia**
|
||||
## Content Security Policy
|
||||
|
||||
- [**Electronegativity**](https://github.com/doyensec/electronegativity) to narzędzie do identyfikacji błędnych konfiguracji i wzorców bezpieczeństwa w aplikacjach opartych na Electron.
|
||||
Aplikacje Electron powinny mieć **Politykę Bezpieczeństwa Treści (CSP)**, aby **zapobiegać atakom XSS**. **CSP** to **standard bezpieczeństwa**, który pomaga **zapobiegać** **wykonywaniu** **niezaufanego kodu** w przeglądarce.
|
||||
|
||||
Zwykle jest **konfigurowany** w pliku **`main.js`** lub w szablonie **`index.html`** z CSP wewnątrz **meta tagu**.
|
||||
|
||||
Aby uzyskać więcej informacji, sprawdź:
|
||||
|
||||
{{#ref}}
|
||||
pentesting-web/content-security-policy-csp-bypass/
|
||||
{{#endref}}
|
||||
|
||||
## **Tools**
|
||||
|
||||
- [**Electronegativity**](https://github.com/doyensec/electronegativity) to narzędzie do identyfikacji błędów konfiguracyjnych i wzorców antybezpieczeństwa w aplikacjach opartych na Electron.
|
||||
- [**Electrolint**](https://github.com/ksdmitrieva/electrolint) to otwarty plugin VS Code dla aplikacji Electron, który wykorzystuje Electronegativity.
|
||||
- [**nodejsscan**](https://github.com/ajinabraham/nodejsscan) do sprawdzania podatnych bibliotek stron trzecich.
|
||||
- [**Electro.ng**](https://electro.ng/): Musisz to kupić.
|
||||
|
||||
## Laboratoria
|
||||
## Labs
|
||||
|
||||
W [https://www.youtube.com/watch?v=xILfQGkLXQo\&t=22s](https://www.youtube.com/watch?v=xILfQGkLXQo&t=22s) możesz znaleźć laboratorium do eksploatacji podatnych aplikacji Electron.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user