<summary><strong>AWS hacklemeyi sıfırdan kahraman olmak için</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> öğrenin!</strong></summary>
* Şirketinizi **HackTricks'te reklamınızı görmek** veya **HackTricks'i PDF olarak indirmek** isterseniz [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
WebSocket bağlantıları, başlangıçta **HTTP** el sıkışması aracılığıyla kurulur ve işlem sistemine ihtiyaç duymadan herhangi bir zamanda **çift yönlü mesajlaşma** sağlamak için **uzun süreli** olarak tasarlanmıştır. Bu, canlı finansal veri akışları gibi **düşük gecikme süresi veya sunucu başlatmalı iletişim** gerektiren uygulamalar için WebSockets'in özellikle avantajlı olmasını sağlar.
WebSocket bağlantılarının ayrıntılı bir açıklamasına [**buradan**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc) erişilebilir. Özet olarak, WebSocket bağlantıları genellikle aşağıdaki gibi istemci tarafı JavaScript kullanılarak başlatılır:
Bağlantı kurulması sırasında tarayıcı ve sunucu arasında HTTP üzerinden bir el sıkışma gerçekleştirilir. El sıkışma süreci, tarayıcının bir istek göndermesi ve sunucunun yanıt vermesini içerir. Aşağıdaki örneklerde gösterildiği gibi:
-`Connection` ve `Upgrade` başlıkları, WebSocket el sıkışmasının başlatıldığını belirtir.
-`Sec-WebSocket-Version` başlığı istenen WebSocket protokol sürümünü belirtir, genellikle `13`'tür.
- Base64 ile kodlanmış rastgele bir değer, `Sec-WebSocket-Key` başlığında gönderilir ve her el sıkışmanın benzersiz olmasını sağlar, bu da önbellekleyen proxy'lerle ilgili sorunları önlemeye yardımcı olur. Bu değer kimlik doğrulama için değil, yanlış yapılandırılmış bir sunucu veya önbellek tarafından oluşturulan yanıtın doğruluğunu onaylamak içindir.
- Sunucunun yanıtındaki `Sec-WebSocket-Accept` başlığı, `Sec-WebSocket-Key`'in bir karmasıdır ve sunucunun bir WebSocket bağlantısı açma niyetini doğrular.
Eğer mevcut yerel ağınızdan istemcilerin bir **HTTP websocket**'e bağlı olduğunu tespit ederseniz, istemci ve sunucu arasında bir MitM saldırısı gerçekleştirmek için bir [ARP Spoofing Saldırısı](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) deneyebilirsiniz.\
İstemci bağlantı kurmaya çalıştığında, aşağıdaki komutu kullanabilirsiniz:
Websocket'leri otomatik olarak keşfetmek, parmak izi almak ve bilinen zayıflıkları aramak için **https://github.com/PalindromeLabs/STEWS** **araç**ını kullanabilirsiniz.
* **Burp Suite**, düzenli HTTP iletişimi için yaptığı gibi MitM websocket iletişimini destekler.
* [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite eklentisi**, Burp'ta Websocket iletişimini daha iyi yönetmenizi sağlar. **Geçmişi** almak, **interception kuralları** belirlemek, **eşleştirme ve değiştirme** kuralları kullanmak, **Intruder** ve **AutoRepeater** kullanmak için kullanılabilir.
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** "**WebSocket/Socket.io Proxy**" kısaltması olan bu Node.js yazılımı, istemci ve sunucu arasındaki tüm WebSocket ve Socket.IO iletişimini **yakalamak**, **intercept etmek**, **özel mesajlar göndermek** ve görüntülemek için bir kullanıcı arayüzü sağlar.
* [**wsrepl**](https://github.com/doyensec/wsrepl), özellikle penetrasyon testi için tasarlanmış **etkileşimli bir websocket REPL**'dir. Gelen websocket mesajlarını gözlemlemek ve yeni mesajlar göndermek için bir arayüz sağlar ve bu iletişimi **otomatikleştirmek** için kolay kullanımlı bir çerçeve sunar.
* [**https://websocketking.com/**](https://websocketking.com/), **websockets** kullanarak diğer web siteleriyle iletişim kurmak için bir **web** sağlar.
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket), diğer iletişim/protokol türlerinin yanı sıra **websockets** kullanarak diğer web siteleriyle iletişim kurmanızı sağlar.
[**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) içinde, websockets kullanarak bir web sitesi başlatmak için bir kod bulunur ve [**bu yazıda**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) açıklama bulabilirsiniz.
**Cross-site WebSocket kaçırma**, WebSocket el sıkışmalarını etkileyen **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)**'nin belirli bir durumu olarak tanımlanır. Bu zayıflık, WebSocket el sıkışmalarının yalnızca **HTTP çerezleri** aracılığıyla kimlik doğrulaması yapması durumunda ortaya çıkar ve CSRF tokenları veya benzeri güvenlik önlemleri kullanılmaz.
Saldırganlar, zayıf bir uygulamaya karşı bir çapraz site WebSocket bağlantısı başlatan **kötü niyetli bir web sayfası** barındırarak bunu sömürebilir. Sonuç olarak, bu bağlantı, oturum işleme mekanizmasındaki CSRF korumasının eksikliğini sömürerek, bağlantının kurbanın oturumuyla birlikte işlenmesi olarak kabul edilir.
Örneğin, eğer **websocket****sunucusu**, "**READY**" iletilmesi durumunda bir kullanıcının konuşma geçmişini geri gönderiyorsa, **basit bir XSS** bağlantı kurarak (çerez, kurban kullanıcıyı yetkilendirmek için **otomatik olarak gönderilecektir**) "**READY**" göndermek, konuşma geçmişini alabilir.
Bu blog yazısında [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/), saldırgan web soket iletişiminin gerçekleştiği alan adının **alt alan adında keyfi JavaScript kodu çalıştırmayı** başardı. **Alt alan adı** olduğu için **çerez** gönderiliyordu ve **Websocket Origin'i doğru şekilde kontrol etmediği** için onunla iletişim kurarak **onun içinden token çalmak** mümkün oldu.
Taklit etmek istediğiniz web uygulamasını (örneğin .html dosyalarını) kopyalayın ve web soket iletişiminin gerçekleştiği betik içine aşağıdaki kodu ekleyin:
Şimdi `wsHook.js` dosyasını [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) adresinden indirin ve **web dosyalarının bulunduğu klasöre kaydedin**.\
Web uygulamasını açığa çıkararak ve bir kullanıcının buna bağlanmasını sağlayarak, websocket üzerinden gönderilen ve alınan mesajları çalabilirsiniz:
WebSockets, verileri sunucu tarafına ve istemci tarafına göndermek için bir mekanizma olduğundan, sunucu ve istemcinin bilgileri nasıl işlediğine bağlı olarak, WebSockets, bir kullanıcının bir web soketinden giriş kullanarak XSS, SQLi veya diğer yaygın web zafiyetlerini sömürmek için kullanılabilir.
Bu zayıflık, ters proxy kısıtlamalarını**atlamak** için bir **web soketi iletişimi kurulmuş gibi** yaparak onlara inandırmanıza izin verebilir (gerçek olmasa bile). Bu, bir saldırganın **gizli uç noktalara erişmesine** olanak tanır. Daha fazla bilgi için aşağıdaki sayfaya bakın:
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmak için</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>'ı öğrenin!</strong></summary>
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu keşfedin, özel [**NFT'lerimizi**](https://opensea.io/collection/the-peass-family) görün
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.