過HTTP啟動,並提供雙向非同步通訊的長期連線。它通常設計於網頁和伺服器之間,但也可以用於任何客戶端和伺服器之間的應用,例如在線遊戲、聊天應用或股票交易平台。
利用篡改WebSocket
訊息的內容,來實現相關漏洞。
例如,假設聊天應用程式使用WebSockets
在瀏覽器和伺服器之間傳送聊天訊息。
當使用者輸入聊天訊息時,會向伺服器傳送以下的WebSocket
訊息:
{"message":"Hello"}
訊息內容(再次透過WebSockets
)傳輸給另一個聊天使用者,並在使用者的瀏覽器中呈現如下:
<td>Hello</td>
在這種情況下,如果沒有其他輸入處理或防禦,攻擊者可以透過提交以下WebSocket
訊息來執行概念實現XSS
攻擊:
{"message":"<img src=1 onerror='alert(1)'>"}
某些WebSockets
漏洞只能透過操縱WebSocket
握手來發現和利用。 這些漏洞往往涉及設計缺陷,例如:
HTTP Header
的錯誤信任。
X-Forwarded-For header
來獲取使用者的真實 IP 地址,但攻擊者可以輕易地篡改該 header
以進行欺騙。WebSocket
訊息的會話上下文通常由三次交握的會話上下文決定。
WebSocket
伺服器只依賴第一次交握時的 cookie
來進行身份驗證,而沒有對後續的 WebSocket
消息進行重新驗證,那麼一旦交握完成,攻擊者可能就能夠利用那個會話來發送任意的 WebSocket
消息。