WebSocket Saldırıları
difficulty: orta
WebSocket bağlantıları HTTP handshake ile başlar, sonra çift yönlü kanala geçer. Güvenlik kontrolleri çoğu zaman handshake’e odaklanır; mesaj içeriği ve origin doğrulaması ihmal edilir. Her mesajı HTTP parametresi gibi test et.
Handshake hatırlatma
Section titled “Handshake hatırlatma”GET /chat HTTP/1.1Host: victim.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Version: 13Origin: https://victim.comCookie: session=...Sunucu 101 Switching Protocols döner. Sonrasında JSON/text/binary frame’ler güvenilmez girdidir.
curl -i -N \ -H 'Connection: Upgrade' \ -H 'Upgrade: websocket' \ -H 'Sec-WebSocket-Version: 13' \ -H 'Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==' \ -H 'Origin: https://attacker.example' \ -H 'Cookie: session=USER' \ https://victim.com/chatMesaj tabanlı enjeksiyonlar
Section titled “Mesaj tabanlı enjeksiyonlar”□ Mesaj DOM'a yazılıyorsa → XSS□ SQL / NoSQL / OS / LDAP / SSTI sink → ilgili injection□ Yetki yalnızca handshake'te → mesaj düzeyinde IDOR□ Komut tipi tahmin edilebilir → {"cmd":"admin_delete","id":1}□ Binary / protobuf / MessagePack → decode edip alan değiştir{ "action": "getUser", "id": 2 }{ "action": "search", "q": "' OR 1=1--" }{ "msg": "<img src=x onerror=alert(1)>" }{ "template": "{{7*7}}" }{ "path": "....//....//etc/passwd" }Cross-Site WebSocket Hijacking (CSWSH)
Section titled “Cross-Site WebSocket Hijacking (CSWSH)”Handshake çerezle kimlik doğruluyor ama Origin doğrulanmıyor ve ek CSRF token yoksa, saldırgan sitesi kurban adına WebSocket açıp veri sızdırabilir:
-
Handshake’i incele — Origin reddediliyor mu? Yalnızca cookie mi var? Sec-WebSocket-Protocol özel token taşıyor mu?
-
Saldırgan Origin ile dene — Burp’da Origin’i değiştir; 101 geliyorsa aday.
-
Saldırgan sayfasından bağlan :
-
Kurbanı çek — oturumlu tarayıcı WS açar; hassas mesajlar attacker’a akar. SameSite=Lax/Strict CSWSH’yi azaltabilir; None veya cookie’siz JWT query/header akışlarında risk sürer.
Origin / confusables
Section titled “Origin / confusables”Origin: https://victim.com.attacker.exampleOrigin: nullOrigin: https://attacker.exampleOrigin: https://victim.com%09.evil.comYetkilendirme hataları
Section titled “Yetkilendirme hataları”□ roomId / userId / channel subscribe değiştir□ Başka kullanıcının mesajlarına subscribe□ Admin-only action'ı user oturumuyla gönder□ Reconnect token / ticket tahmin edilebilir veya reuse□ Rate limit yok → mesaj flood / account enumeration{ "subscribe": "user:1001" }{ "subscribe": "user:1002" }{ "action": "transfer", "from": 1, "to": 2, "amount": 100 }Race / replay
Section titled “Race / replay”□ Aynı harcama mesajını paralel gönder (race)□ Eski signed message replay□ Sequence number yoksa reorderHTTP smuggling / proxy kenarı
Section titled “HTTP smuggling / proxy kenarı”Nadir: ön proxy WebSocket upgrade’i yanlış işlerse isteğin diğer kullanıcı bağlantısına karışması (lab/özel bug). Upgrade isteklerini smuggling test setine ekleyin.
Test araçları
Section titled “Test araçları”websocat -H='Cookie: session=...' wss://hedef/chatwscat -c 'wss://hedef/chat' --header 'Cookie: session=...'websocat -E wss://hedef/chatChecklist
Section titled “Checklist”□ Origin / CSRF token / SameSite cookie matrisi□ Her mesaj tipi için IDOR + injection□ XSS sink (chat UI)□ CSWSH PoC (zararsız read)□ Binary protokol decode□ Reconnect & ticket güvenliği