iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

什麼是 WebSocket?

過HTTP啟動,並提供雙向非同步通訊的長期連線。它通常設計於網頁和伺服器之間,但也可以用於任何客戶端和伺服器之間的應用,例如在線遊戲、聊天應用或股票交易平台。

操縱WebSocket訊息

利用篡改WebSocket訊息的內容,來實現相關漏洞。
例如,假設聊天應用程式使用WebSockets在瀏覽器和伺服器之間傳送聊天訊息。
當使用者輸入聊天訊息時,會向伺服器傳送以下的WebSocket訊息:

{"message":"Hello"}

訊息內容(再次透過WebSockets)傳輸給另一個聊天使用者,並在使用者的瀏覽器中呈現如下:

<td>Hello</td>

在這種情況下,如果沒有其他輸入處理或防禦,攻擊者可以透過提交以下WebSocket訊息來執行概念實現XSS攻擊:

{"message":"<img src=1 onerror='alert(1)'>"}

Lab time

操縱WebSocket交握

某些WebSockets漏洞只能透過操縱WebSocket握手來發現和利用。 這些漏洞往往涉及設計缺陷,例如:

  • HTTP Header的錯誤信任。
    • 例如 應用程序可能信任 X-Forwarded-For header 來獲取使用者的真實 IP 地址,但攻擊者可以輕易地篡改該 header 以進行欺騙。
  • 會話處理機制中的缺陷,因為處理WebSocket訊息的會話上下文通常由三次交握的會話上下文決定。
    • 例如,如果 WebSocket 伺服器只依賴第一次交握時的 cookie 來進行身份驗證,而沒有對後續的 WebSocket 消息進行重新驗證,那麼一旦交握完成,攻擊者可能就能夠利用那個會話來發送任意的 WebSocket 消息。

Lab time


上一篇
[Day 24]HTTP Host header攻擊
下一篇
[Day 26]更多的 CSRF 漏洞
系列文
從 Moblie Development 主題被損友洗腦鬼轉 Security 的我真的可以完賽嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言