iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 20
3
Security

資安這條路─以自建漏洞環境學習資訊安全系列 第 20

資安這條路 20 - [WebSecurity] WebSocket

  • WebSocket 是現今網站常使用的通訊協定,通常用來於使用者須及時操作的場景,如聊天室,首先執行 WebSocket 的必須先透過 HTTP 進行連線。

    • 交握之後會透過 101 Switching Protocol
    • 這時候連線就會建立,就可以開始進行訊息交換
  • 範例

    • var ws = new WebSocket("wss://feifei.com.tw/chat");
    GET /chat HTTP/1.1
    Host: feifei.com.tw
    Connection: Upgrade
    Pragma: no-cache
    Cache-Control: no-cache
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
    Upgrade: websocket
    Origin: https://feifei.com.tw
    Sec-WebSocket-Version: 13
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-TW,zh;q=0.9,en;q=0.8,zh-CN;q=0.7
    Sec-WebSocket-Key: 0ReW1LEX1c2qand9Jqj9vg==
    Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
    
    HTTP/1.1 101 Switching Protocol
    Connection: Upgrade
    Upgrade: websocket
    Sec-WebSocket-Accept: q66Hj1y4IMh+m9EkQRdX87EBrWc=
    Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover
    Content-Length: 0
    
    • Request 和 Response 中的 ConnectionUpgrade headers 為 websocket
    • Request header 中的
      • Sec-WebSocket-Version 指定希望使用的 WebSocket 版本,通常是版本 13。
      • Sec-WebSocket-Key 為 Base64 編碼的隨機值,在每個 handshake 請求中隨機產生。
    • Response header 中的
      • Sec-WebSocket-Accept 為請求 Sec-WebSocket-Key 的 hash 值,且於規範定義的特定的字串串接,為了防止由於伺服器設定錯誤或 proxy caching 錯誤而引起的 misleading responses。
    • 傳送訊息
      • ws.send("Hello World!");
      • WebSocket 允許任何內容或格式
    • 接收訊息
      ws.onmessage = function(e) {
        console.log(e.data);
      }
      
  • 進行檢測

    • 檢測 WebSocket 需要使用 BurpSuite 來攔截並重送請求
    • (如果有其他軟體也可以在底下推薦給我知道,謝謝)
  • LAB

    • 竄改 WebSocket 封包導致 XSS
      • 此漏洞僅進行前端驗證,因此可以竄改封包導致 XSS 產生。
      • lab
    • 竄改 WebSocket handshake
      • 過於信任 X-Forwarded-For
      • Session 驗證機制有弱點,導致可利用
      • 自定義 HTTP Header 導致網站有弱點
      • lab
  • 加強版的 CSRF - cross-site WebSocket hijacking (CSWSH)

    • 弱點在於 WebSocket handshake
    • lab

如何防禦


上一篇
資安這條路 19 - [WebSecurity] Cross-origin resource sharing (CORS)
下一篇
資安這條路 21 - [WebSecurity] DOM-based vulnerabilities
系列文
資安這條路─以自建漏洞環境學習資訊安全31

尚未有邦友留言

立即登入留言