<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
[Z dokumentacji](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Gdy uruchomiony jest proces Node.js z przełącznikiem `--inspect`, nasłuchuje on na klienta debugującego. **Domyślnie** nasłuchuje na adresie hosta i porcie **`127.0.0.1:9229`**. Każdy proces otrzymuje również **unikalne****UUID**.
Klienci debugera muszą znać i określić adres hosta, port i UUID, aby się połączyć. Pełny adres URL będzie wyglądał na coś takiego: `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
Ponieważ **debuger ma pełny dostęp do środowiska wykonawczego Node.js**, złośliwy aktor, który jest w stanie połączyć się z tym portem, może wykonać dowolny kod w imieniu procesu Node.js (**potencjalne eskalowanie uprawnień**).
Procesy oparte na **CEF** (**Chromium Embedded Framework**), takie jak, muszą używać parametru: `--remote-debugging-port=9222`, aby otworzyć **debugger** (ochrona przed SSRF pozostaje bardzo podobna). Jednakże, zamiast udostępniać sesję **debugowania****NodeJS**, będą komunikować się z przeglądarką za pomocą [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), jest to interfejs do kontrolowania przeglądarki, ale nie ma bezpośredniego RCE.
Strony internetowe otwarte w przeglądarce internetowej mogą wykonywać żądania WebSocket i HTTP zgodnie z modelem bezpieczeństwa przeglądarki. **Początkowe połączenie HTTP** jest konieczne do **uzyskania unikalnego identyfikatora sesji debugera**. **Polityka same-origin****uniemożliwia** stronom internetowym wykonanie **tego połączenia HTTP**. W celu dodatkowego zabezpieczenia przed [**atakami DNS rebinding**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** Node.js sprawdza, czy nagłówki **'Host'** dla połączenia określają dokładnie **adres IP** lub **`localhost`** lub **`localhost6`**.
Te **środki bezpieczeństwa uniemożliwiają wykorzystanie inspektora** do uruchamiania kodu **poprzez wysłanie żądania HTTP** (co mogłoby być możliwe w przypadku wykorzystania podatności SSRF).
Możesz wysłać **sygnał SIGUSR1** do działającego procesu Node.js, aby **uruchomić inspektora** na domyślnym porcie. Należy jednak zauważyć, że wymaga to odpowiednich uprawnień, więc może to dać ci **uprzywilejowany dostęp do informacji wewnątrz procesu**, ale nie bezpośrednie podniesienie uprawnień.
Jest to przydatne w kontenerach, ponieważ **zamknięcie procesu i uruchomienie nowego** z opcją `--inspect` nie jest **opcją**, ponieważ **kontener** zostanie **zabity** wraz z procesem.
Aby połączyć się z przeglądarką opartą na Chromium, można użyć adresów URL `chrome://inspect` lub `edge://inspect` dla przeglądarki Chrome lub Edge. Klikając przycisk Konfiguruj, należy upewnić się, że **adres hosta i port** są poprawnie wymienione. Obrazek pokazuje przykład zdalnego wykonania kodu (RCE):
Narzędzie [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) umożliwia **znalezienie inspektorów** działających lokalnie i **wstrzyknięcie kodu** do nich.
Należy zauważyć, że **exploity RCE NodeJS nie zadziałają**, jeśli jesteś połączony z przeglądarką za pomocą [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (musisz sprawdzić API, aby znaleźć interesujące rzeczy, które można z nim zrobić).
Jeśli tu trafiłeś, szukając sposobu na uzyskanie [**RCE z XSS w Electron, sprawdź tę stronę.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
Niektóre powszechne sposoby uzyskania **RCE**, gdy można **połączyć się** z **inspektorem** Node, to używanie czegoś takiego jak (wygląda na to, że to **nie zadziała w połączeniu z protokołem Chrome DevTools**):
W przypadku [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Rhino Security odkrył, że aplikacja oparta na CEF **zarejestrowała niestandardowy adres URI** w systemie (workspaces://), który otrzymywał pełny adres URI, a następnie **uruchamiał aplikację opartą na CEF** z konfiguracją częściowo konstruowaną na podstawie tego adresu URI.
Odkryto, że parametry adresu URI były dekodowane z użyciem URL i używane do uruchamiania podstawowej aplikacji CEF, co umożliwia użytkownikowi **wstrzyknięcie** flagi **`--gpu-launcher`** w **linii poleceń** i wykonanie dowolnych czynności.
Zmień folder, w którym **zapisywane są pobrane pliki**, i pobierz plik, aby **nadpisać** często używany **kod źródłowy** aplikacji swoim **złośliwym kodem**.
Zgodnie z tym postem: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148), możliwe jest uzyskanie RCE i eksfiltracja wewnętrznych stron z theriver.
W rzeczywistym środowisku i **po skompromitowaniu** komputera użytkownika korzystającego z przeglądarki opartej na Chrome/Chromium, można uruchomić proces Chrome z aktywowanym debugowaniem i przekierować port debugowania, aby uzyskać do niego dostęp. W ten sposób będzie można **inspirować wszystko, co ofiara robi w Chrome i kraść wrażliwe informacje**.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.