Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
WebSocket 연결은 초기 **HTTP** 핸드셰이크를 통해 설정되며, **장기 지속적**으로 설계되어 언제든지 양방향 메시징을 가능하게 하여 거래 시스템이 필요하지 않습니다. 이는 WebSocket이 실시간 금융 데이터 스트림과 같은 **저지연 또는 서버 시작 통신**이 필요한 애플리케이션에 특히 유리하게 만듭니다.
WebSocket 연결을 설정하는 방법에 대한 자세한 설명은 [**여기**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)에서 확인할 수 있습니다. 요약하자면, WebSocket 연결은 일반적으로 클라이언트 측 JavaScript를 통해 시작됩니다.
- Base64로 인코딩된 무작위 값이 `Sec-WebSocket-Key` 헤더에 전송되어 각 핸드셰이크가 고유하도록 보장하며, 이는 캐싱 프록시와 관련된 문제를 방지하는 데 도움이 됩니다. 이 값은 인증을 위한 것이 아니라 응답이 잘못 구성된 서버나 캐시에서 생성되지 않았음을 확인하기 위한 것입니다.
- 서버의 응답에 있는 `Sec-WebSocket-Accept` 헤더는 `Sec-WebSocket-Key`의 해시로, WebSocket 연결을 열려는 서버의 의도를 검증합니다.
클라이언트가 현재 로컬 네트워크에서 **HTTP websocket**에 연결되어 있는 것을 발견하면, 클라이언트와 서버 간의 MitM 공격을 수행하기 위해 [ARP Spoofing Attack](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)을 시도할 수 있습니다.\
You can use the **tool** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **to discover, fingerprint and search for known****vulnerabilities** in websockets automatically.
* **Burp Suite**는 일반 HTTP 통신과 매우 유사한 방식으로 MitM websockets 통신을 지원합니다.
* The [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite extension**는 **history**를 가져오고, **interception rules**를 설정하며, **match and replace** 규칙을 사용하고, **Intruder** 및 **AutoRepeater**를 사용하여 Burp에서 Websocket 통신을 더 잘 관리할 수 있게 해줍니다.
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** "**WebSocket/Socket.io Proxy**"의 약자로, Node.js로 작성된 이 도구는 클라이언트와 서버 간의 모든 WebSocket 및 Socket.IO 통신을 **capture, intercept, send custom** 메시지를 보내고 볼 수 있는 사용자 인터페이스를 제공합니다.
* [**wsrepl**](https://github.com/doyensec/wsrepl)는 **penetration testing**을 위해 특별히 설계된 **interactive websocket REPL**입니다. 이는 **incoming websocket messages**를 관찰하고 새로운 메시지를 보내는 인터페이스를 제공하며, 이 통신을 **automating**하기 위한 사용하기 쉬운 프레임워크를 제공합니다. 
* [**https://websocketking.com/**](https://websocketking.com/)는 **websockets**를 사용하여 다른 웹과 통신하는 **web**입니다.
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket)는 다른 유형의 통신/프로토콜 중에서 **websockets**를 사용하여 다른 웹과 통신하는 **web**을 제공합니다.
In [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) you have a code to launch a web using websockets and in [**this post**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) you can find an explanation.
**Cross-site WebSocket hijacking**, 또한 **cross-origin WebSocket hijacking**으로 알려진 이 공격은 WebSocket 핸드셰이크에 영향을 미치는 특정한 경우의 **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)**로 식별됩니다. 이 취약점은 WebSocket 핸드셰이크가 **CSRF tokens** 또는 유사한 보안 조치 없이 오직 **HTTP cookies**를 통해 인증될 때 발생합니다.
공격자는 **취약한 애플리케이션**에 대한 교차 사이트 WebSocket 연결을 시작하는 **악성 웹 페이지**를 호스팅하여 이를 악용할 수 있습니다. 결과적으로 이 연결은 애플리케이션과의 피해자의 세션의 일부로 간주되며, 세션 처리 메커니즘에서 CSRF 보호가 부족한 점을 악용합니다.
**websocket** 연결을 **establishing**할 때 **cookie**가 **서버**로 **전송**된다는 점에 유의하십시오. **서버**는 이를 사용하여 **전송된 cookie**를 기반으로 각 **특정****사용자**와 그의 **websocket** **세션**을 **연관**시킬 수 있습니다.
그런 다음, 예를 들어 **websocket****서버**가 사용자의 대화 **history**를 **전송**하는 경우, "**READY"**라는 메시지가 전송되면, **simple XSS**를 통해 연결을 설정하면 (이때 **cookie**는 피해자 사용자를 인증하기 위해 **자동으로 전송**됩니다) "**READY**"를 전송하여 **대화**의 **history**를 **가져올** 수 있습니다.
이 블로그 게시물 [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/)에서 공격자는 **웹 소켓 통신이 발생하는 도메인의 서브도메인에서 임의의 Javascript를 실행**하는 데 성공했습니다. **서브도메인**이었기 때문에 **쿠키**가 **전송**되었고, **Websocket이 Origin을 제대로 확인하지 않았기 때문에**, 이를 통해 통신하고 **토큰을 훔치는** 것이 가능했습니다.
Web Sockets는 **서버 측과 클라이언트 측에 데이터를 전송하는 메커니즘**이므로, 서버와 클라이언트가 정보를 처리하는 방식에 따라, **Web Sockets는 웹 소켓의 사용자 입력을 사용하여 XSS, SQLi 또는 기타 일반적인 웹 취약점을 악용하는 데 사용될 수 있습니다.**
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.