<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
WebSocket-Verbindungen werden durch einen initialen **HTTP**-Handshake hergestellt und sind darauf ausgelegt, **langfristig** zu sein, um eine bidirektionale Kommunikation zu ermöglichen, ohne dass ein transaktionales System erforderlich ist. Dies macht WebSockets besonders vorteilhaft für Anwendungen, die eine **geringe Latenz oder serverinitiierte Kommunikation** erfordern, wie z.B. Live-Finanzdatenströme.
Eine detaillierte Erklärung zum Aufbau von WebSocket-Verbindungen finden Sie [**hier**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). Zusammenfassend werden WebSocket-Verbindungen in der Regel über clientseitiges JavaScript initiiert, wie unten gezeigt:
Während des Verbindungsaufbaus wird ein Handshake zwischen dem Browser und dem Server über HTTP durchgeführt. Der Handshake-Prozess beinhaltet, dass der Browser eine Anfrage sendet und der Server antwortet, wie in den folgenden Beispielen dargestellt:
- Die Header `Connection` und `Upgrade` signalisieren den Beginn eines WebSocket-Handshakes.
- Der Header `Sec-WebSocket-Version` gibt die gewünschte WebSocket-Protokollversion an, normalerweise `13`.
- Ein Base64-kodierter Zufallswert wird im Header `Sec-WebSocket-Key` gesendet, um sicherzustellen, dass jeder Handshake eindeutig ist. Dadurch werden Probleme mit Caching-Proxies vermieden. Dieser Wert dient nicht zur Authentifizierung, sondern zur Bestätigung, dass die Antwort nicht von einem fehlerhaft konfigurierten Server oder Cache generiert wurde.
- Der Header `Sec-WebSocket-Accept` in der Antwort des Servers ist ein Hash des `Sec-WebSocket-Key` und bestätigt die Absicht des Servers, eine WebSocket-Verbindung zu öffnen.
Wenn Sie feststellen, dass Clients über ein **HTTP-Websocket** aus Ihrem aktuellen lokalen Netzwerk verbunden sind, können Sie versuchen, einen [ARP-Spoofing-Angriff](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) durchzuführen, um einen MitM-Angriff zwischen dem Client und dem Server durchzuführen.\
Sobald der Client versucht, eine Verbindung herzustellen, können Sie dann Folgendes verwenden:
Sie können das **Tool** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) verwenden, um Websockets automatisch zu entdecken, zu identifizieren und nach bekannten **Schwachstellen** zu suchen.
* **Burp Suite** unterstützt die MitM-Kommunikation von Websockets auf ähnliche Weise wie bei regulärer HTTP-Kommunikation.
* Die **Burp Suite-Erweiterung** [**socketsleuth**](https://github.com/snyk/socketsleuth) ermöglicht eine bessere Verwaltung von Websocket-Kommunikation in Burp, indem Sie den **Verlauf** abrufen, **Interception-Regeln** festlegen, **Match- und Replace-Regeln** verwenden und **Intruder** und **AutoRepeater** nutzen.
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** Abkürzung für "**WebSocket/Socket.io Proxy**", dieses in Node.js geschriebene Tool bietet eine Benutzeroberfläche zum **Erfassen, Abfangen, Senden von benutzerdefinierten** Nachrichten und Anzeigen aller WebSocket- und Socket.IO-Kommunikationen zwischen Client und Server.
* [**wsrepl**](https://github.com/doyensec/wsrepl) ist ein **interaktiver WebSocket-REPL**, der speziell für Penetrationstests entwickelt wurde. Es bietet eine Schnittstelle zum Beobachten von **eingehenden WebSocket-Nachrichten und Senden neuer Nachrichten**, mit einem benutzerfreundlichen Framework zur **Automatisierung** dieser Kommunikation.
* [**https://websocketking.com/**](https://websocketking.com/) ist eine **Webseite zur Kommunikation** mit anderen Webseiten über **Websockets**.
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) bietet neben anderen Arten von Kommunikationsprotokollen eine **Webseite zur Kommunikation** mit anderen Webseiten über **Websockets**.
In [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) finden Sie einen Code, um eine Webseite mit Websockets zu starten, und in [**diesem Beitrag**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) finden Sie eine Erklärung dazu.
**Cross-Site WebSocket-Hijacking**, auch bekannt als **Cross-Origin WebSocket-Hijacking**, wird als spezieller Fall von **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)** identifiziert, der WebSocket-Handshakes betrifft. Diese Schwachstelle tritt auf, wenn WebSocket-Handshakes ausschließlich über **HTTP-Cookies** ohne CSRF-Token oder ähnliche Sicherheitsmaßnahmen authentifiziert werden.
Angreifer können dies ausnutzen, indem sie eine **bösartige Webseite** hosten, die eine Cross-Site-WebSocket-Verbindung zu einer verwundbaren Anwendung initiiert. Diese Verbindung wird dann als Teil der Sitzung des Opfers mit der Anwendung behandelt und nutzt das Fehlen von CSRF-Schutz im Sitzungs-Handling-Mechanismus aus.
Beachten Sie, dass beim **Aufbau** einer **WebSocket-Verbindung** das **Cookie** an den Server **gesendet** wird. Der Server kann es verwenden, um jeden **bestimmten Benutzer** mit seiner **WebSocket-Sitzung basierend auf dem gesendeten Cookie** in Verbindung zu bringen.
Dann kann zum Beispiel der **WebSocket-Server** bei **Senden** von "**READY**" die **Geschichte des Gesprächs** eines Benutzers zurückschicken. Daher kann ein einfacher XSS-Angriff, der die Verbindung herstellt (das **Cookie** wird automatisch gesendet, um den Opferbenutzer zu autorisieren), indem er "**READY**" **sendet**, die Geschichte des Gesprächs abrufen.
In diesem Blog-Beitrag [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) gelang es dem Angreifer, **beliebigen JavaScript-Code in einem Subdomain** der Domain auszuführen, in der die Websocket-Kommunikation stattfand. Da es sich um eine **Subdomain** handelte, wurde das **Cookie** gesendet und da der **Websocket den Ursprung nicht ordnungsgemäß überprüfte**, war es möglich, mit ihm zu kommunizieren und **Token daraus zu stehlen**.
Kopieren Sie die Webanwendung, die Sie vortäuschen möchten (z. B. die .html-Dateien) und fügen Sie in das Skript, in dem die Websocket-Kommunikation stattfindet, den folgenden Code ein:
Jetzt laden Sie die Datei `wsHook.js` von [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) herunter und **speichern Sie sie im Ordner mit den Webdateien**.\
Indem Sie die Webanwendung freigeben und einen Benutzer damit verbinden, können Sie die über Websocket gesendeten und empfangenen Nachrichten stehlen:
Da WebSockets ein Mechanismus sind, um Daten an den Server- und Client-Seite zu senden, können WebSockets, abhängig davon, wie der Server und der Client die Informationen verarbeiten, verwendet werden, um mehrere andere Schwachstellen wie XSS, SQLi oder jede andere gängige Web-Schwachstelle unter Verwendung einer Eingabe eines Benutzers über einen WebSocket auszunutzen.
Diese Schwachstelle könnte es Ihnen ermöglichen, die Beschränkungen von Reverse Proxies zu umgehen, indem Sie sie glauben machen, dass eine WebSocket-Kommunikation hergestellt wurde (auch wenn dies nicht der Fall ist). Dies könnte einem Angreifer ermöglichen, auf versteckte Endpunkte zuzugreifen. Weitere Informationen finden Sie auf der folgenden Seite:
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.