Cross site WebSocket hijacking (CSWSH)
Cross-site WebSocket hijacking (CSWSH)
WebSockets nədir?
WebSocket əlaqələri HTTP üzərindən başlayır və adətən uzunömürlüdür. Mesajlar istənilən vaxt istənilən istiqamətdə göndərilə bilər və tranzaksiya xarakteri daşımır. Müştəri və ya server mesaj göndərməyə hazır olana qədər əlaqə normal olaraq açıq və boş qalacaq.
WebSockets, maliyyə məlumatlarının real vaxt rejimində ötürülməsi kimi aşağı gecikmə və ya server tərəfindən başlatılan mesajların tələb olunduğu hallarda xüsusilə faydalıdır.
WebSocket əlaqələri necə qurulur?
WebSocket əlaqələri adətən aşağıdakı kimi müştəri tərəfində JavaScript istifadə edərək yaradılır:
WSS protokolu şifrələnmiş TLS bağlantısı üzərində WebSocket qurur, ws protokolu isə şifrələnməmiş bağlantıdan istifadə edir.
Bağlantı qurmaq üçün brauzer və server HTTP üzərindən WebSocket handshake həyata keçirir. Brauzer aşağıdakı kimi WebSocket handshake sorğusu verir:
GET /chat HTTP/1.1
Server əlaqəni qəbul edərsə, o, aşağıdakı kimi WebSocket handshake cavabını qaytarır:
Bu nöqtədə şəbəkə bağlantısı açıq qalır və hər iki istiqamətdə WebSocket mesajlarını göndərmək üçün istifadə edilə bilər.
Qeyd
WebSocket handshake mesajlarının bir neçə xüsusiyyətini qeyd etməyə dəyər:
Sorğu və cavabdakı Connection və Upgrade başlıqları bunun WebSocket handshake olduğunu göstərir.
Sec-WebSocket-Version sorğu başlığı müştərinin istifadə etmək istədiyi WebSocket protokolunun versiyasını müəyyən edir. Bu adətən 13-dür.
Sec-WebSocket-Key sorğu başlığı hər bir handshake sorğusunda təsadüfi yaradılmalı olan Base64 kodlu təsadüfi dəyərdən ibarətdir.
Sec-WebSocket-Accept cavab başlığı Sec-WebSocket-Key sorğu başlığında təqdim edilmiş, protokol spesifikasiyasında müəyyən edilmiş xüsusi sətirlə birləşdirilən dəyərin heshini ehtiva edir. Bu, səhv konfiqurasiya edilmiş serverlər və ya proksilərin keşləşdirilməsi nəticəsində yaranan yanıltıcı cavabların qarşısını almaq üçün edilir.
Sec-WebSocket-Key başlığı proksilərin keşləşdirilməsində səhvlərin qarşısını almaq üçün təsadüfi dəyərdən ibarətdir və autentifikasiya və ya sessiyanın idarə edilməsi məqsədləri üçün istifadə edilmir (Bu, CSRF nişanı deyil).
Linux konsolu
Siz websocket ilə raw əlaqə yaratmaq üçün websocat istifadə edə bilərsiniz.
Və ya websocat serveri yaratmaq üçün:
MitM veb-soket bağlantıları
Müştərilərin cari yerli şəbəkənizdən HTTP veb-soketinə qoşulduğunu görsəniz, müştəri və server arasında MitM hücumu həyata keçirmək üçün ARP Spoofing Attack cəhd edə bilərsiniz.
Müştəri sizinlə əlaqə saxlamağa çalışdıqdan sonra istifadə edə bilərsiniz:
Sadə Hücum
Qeyd edək ki, veb-soket bağlantısı qurarkən kuki serverə göndərilir. Server göndərilən kuki əsasında hər bir xüsusi istifadəçini veb-soket sessiyası ilə əlaqələndirmək üçün ondan istifadə edə bilər.
Sonra, məsələn, veb-soket serveri istifadəçinin söhbət tarixini geri göndərirsə, əgər "READY" ilə mesaj göndərilirsə, o zaman əlaqə quran sadə XSS (cookie qurban istifadəçiyə icazə vermək üçün avtomatik olaraq göndəriləcək) göndərilir " READY" söhbətin tarixçəsini əldə edə biləcək:
İstifadəçidən məlumatların oğurlanması
Təqlid etmək istədiyiniz veb tətbiqini (məsələn, .html faylları) kopyalayın və veb-socket rabitəsinin baş verdiyi skriptin içərisinə bu kodu əlavə edin:
İndi (https://github.com/skepticfx/wshook) ünvanından wsHook.js faylını yükləyin və veb faylları olan qovluqda saxlayın.
Veb tətbiqini expose etməklə və istifadəçini ona qoşulmaqla siz göndərilən və qəbul edilən mesajları websocket vasitəsilə oğurlaya biləcəksiniz:
Last updated