πWebSockets
What are WebSockets?
WebSockets lΓ mα»t giao thα»©c liΓͺn lαΊ‘c hai chiα»u, song cΓ΄ng hoΓ n toΓ n Δược khα»i tαΊ‘o qua HTTP. ChΓΊng thΖ°α»ng Δược sα» dα»₯ng trong cΓ‘c α»©ng dα»₯ng web hiα»n ΔαΊ‘i Δα» truyα»n dα»― liα»u vΓ lΖ°u lượng khΓ΄ng Δα»ng bα» khΓ‘c.
Trong phαΊ§n nΓ y, chΓΊng tΓ΄i sαΊ½ giαΊ£i thΓch sα»± khΓ‘c biα»t giα»―a HTTP vΓ WebSockets, mΓ΄ tαΊ£ cΓ‘ch kαΊΏt nα»i WebSocket Δược thiαΊΏt lαΊp vΓ phΓ‘c thαΊ£o cΓ‘c thΓ΄ng bΓ‘o WebSocket trΓ΄ng nhΖ° thαΊΏ nΓ o.
What is the difference between HTTP and WebSockets?
HαΊ§u hαΊΏt giao tiαΊΏp giα»―a trΓ¬nh duyα»t web vΓ trang web Δα»u sα» dα»₯ng HTTP. Vα»i HTTP, mΓ‘y khΓ‘ch gα»i yΓͺu cαΊ§u vΓ mΓ‘y chủ trαΊ£ vα» phαΊ£n hα»i. ThΓ΄ng thΖ°α»ng, phαΊ£n hα»i xαΊ£y ra ngay lαΊp tα»©c vΓ giao dα»ch hoΓ n tαΊ₯t. Ngay cαΊ£ khi kαΊΏt nα»i mαΊ‘ng vαΊ«n mα», kαΊΏt nα»i nΓ y sαΊ½ Δược sα» dα»₯ng cho mα»t giao dα»ch riΓͺng của yΓͺu cαΊ§u vΓ phαΊ£n hα»i.
Mα»t sα» trang web hiα»n ΔαΊ‘i sα» dα»₯ng WebSockets. CΓ‘c kαΊΏt nα»i WebSocket Δược bαΊ―t ΔαΊ§u qua HTTP vΓ thΖ°α»ng tα»n tαΊ‘i lΓ’u dΓ i. Tin nhαΊ―n cΓ³ thα» Δược gα»i theo mα»t trong hai hΖ°α»ng vΓ o bαΊ₯t kα»³ lΓΊc nΓ o vΓ khΓ΄ng mang tΓnh chαΊ₯t giao dα»ch. KαΊΏt nα»i thΖ°α»ng sαΊ½ mα» vΓ khΓ΄ng hoαΊ‘t Δα»ng cho ΔαΊΏn khi mΓ‘y khΓ‘ch hoαΊ·c mΓ‘y chủ sαΊ΅n sΓ ng gα»i tin nhαΊ―n.
WebSockets ΔαΊ·c biα»t hα»―u Γch trong cΓ‘c trΖ°α»ng hợp yΓͺu cαΊ§u thΓ΄ng bΓ‘o cΓ³ Δα» trα» thαΊ₯p hoαΊ·c do mΓ‘y chủ khα»i tαΊ‘o, chαΊ³ng hαΊ‘n nhΖ° nguα»n cαΊ₯p dα»― liα»u tΓ i chΓnh theo thα»i gian thα»±c.
How are WebSocket connections established?
CΓ‘c kαΊΏt nα»i WebSocket thΖ°α»ng Δược tαΊ‘o bαΊ±ng JavaScript phΓa mΓ‘y khΓ‘ch nhΖ° sau:
Giao thα»©c
wss
thiαΊΏt lαΊp WebSocket qua kαΊΏt nα»i TLS Δược mΓ£ hΓ³a, trong khi giao thα»©cws
sα» dα»₯ng kαΊΏt nα»i khΓ΄ng Δược mΓ£ hΓ³a.
Δα» thiαΊΏt lαΊp kαΊΏt nα»i, trΓ¬nh duyα»t vΓ mΓ‘y chủ thα»±c hiα»n WebSocket handshake qua HTTP. TrΓ¬nh duyα»t ΔΖ°a ra yΓͺu cαΊ§u WebSocket handshake nhΖ° sau:
NαΊΏu mΓ‘y chủ chαΊ₯p nhαΊn kαΊΏt nα»i, nΓ³ sαΊ½ trαΊ£ vα» phαΊ£n hα»i WebSocket handshake nhΖ° sau:
TαΊ‘i thα»i Δiα»m nΓ y, kαΊΏt nα»i mαΊ‘ng vαΊ«n mα» vΓ cΓ³ thα» Δược sα» dα»₯ng Δα» gα»i thΓ΄ng bΓ‘o WebSocket theo mα»t trong hai hΖ°α»ng.
Mα»t sα» tΓnh nΔng của thΓ΄ng bΓ‘o WebSocket handshake ΔΓ‘ng chΓΊ Γ½:
TiΓͺu Δα»
Connection
vΓUpgrade
trong yΓͺu cαΊ§u vΓ phαΊ£n hα»i chα» ra rαΊ±ng ΔΓ’y lΓ WebSocket handshake.TiΓͺu Δα»
Sec-WebSocket-Version
yΓͺu cαΊ§u chα» Δα»nh phiΓͺn bαΊ£n giao thα»©c WebSocket mΓ mΓ‘y khΓ‘ch muα»n sα» dα»₯ng. Δiα»u nΓ y thΖ°α»ng lΓ13
.TiΓͺu Δα»
Sec-WebSocket-Key
yΓͺu cαΊ§u chα»©a giΓ‘ trα» ngαΊ«u nhiΓͺn Δược mΓ£ hΓ³a Base64, giΓ‘ trα» nΓ y sαΊ½ Δược tαΊ‘o ngαΊ«u nhiΓͺn trong mα»i yΓͺu cαΊ§u bαΊ―t tay.TiΓͺu Δα»
Sec-WebSocket-Accept
phαΊ£n hα»i chα»©a hΓ m bΔm của giΓ‘ trα» Δược gα»i trong tiΓͺu Δα»Sec-WebSocket-Key
yΓͺu cαΊ§u, Δược nα»i vα»i mα»t chuα»i cα»₯ thα» Δược xΓ‘c Δα»nh trong ΔαΊ·c tαΊ£ giao thα»©c. Δiα»u nΓ y Δược thα»±c hiα»n Δα» ngΔn chαΊ·n cΓ‘c phαΊ£n hα»i sai lα»ch do mΓ‘y chủ hoαΊ·c proxy bα» nhα» Δα»m bα» Δα»nh cαΊ₯u hΓ¬nh sai.
What do WebSocket messages look like?
Khi kαΊΏt nα»i WebSocket ΔΓ£ Δược thiαΊΏt lαΊp, cΓ‘c thΓ΄ng bΓ‘o cΓ³ thα» Δược gα»i khΓ΄ng Δα»ng bα» theo cαΊ£ hai hΖ°α»ng bα»i mΓ‘y khΓ‘ch hoαΊ·c mΓ‘y chủ.
Mα»t tin nhαΊ―n ΔΖ‘n giαΊ£n cΓ³ thα» Δược gα»i tα»« trΓ¬nh duyα»t bαΊ±ng JavaScript phΓa mΓ‘y khΓ‘ch nhΖ° sau:
Vα» nguyΓͺn tαΊ―c, thΓ΄ng bΓ‘o WebSocket cΓ³ thα» chα»©a bαΊ₯t kα»³ nα»i dung hoαΊ·c Δα»nh dαΊ‘ng dα»― liα»u nΓ o. Trong cΓ‘c α»©ng dα»₯ng hiα»n ΔαΊ‘i, JSON thΖ°α»ng Δược sα» dα»₯ng Δα» gα»i dα»― liα»u cΓ³ cαΊ₯u trΓΊc trong cΓ‘c thΓ΄ng bΓ‘o WebSocket.
VΓ dα»₯: mα»t α»©ng dα»₯ng chat-bot sα» dα»₯ng WebSockets cΓ³ thα» gα»i mα»t thΓ΄ng bΓ‘o nhΖ° sau:
Manipulating WebSocket traffic
Intercepting and modifying WebSocket messages
BαΊ‘n cΓ³ thα» sα» dα»₯ng Burp Proxy Δα» chαΊ·n vΓ sα»a Δα»i cΓ‘c thΓ΄ng bΓ‘o WebSocket nhΖ° sau:
Mα» trΓ¬nh duyα»t của Burp.
Duyα»t ΔαΊΏn chα»©c nΔng α»©ng dα»₯ng sα» dα»₯ng WebSockets. BαΊ‘n cΓ³ thα» xΓ‘c Δα»nh rαΊ±ng WebSockets Δang Δược sα» dα»₯ng bαΊ±ng cΓ‘ch sα» dα»₯ng α»©ng dα»₯ng vΓ tΓ¬m kiαΊΏm cΓ‘c mα»₯c xuαΊ₯t hiα»n trong tab lα»ch sα» WebSockets trong Burp Proxy.
Trong tab ChαΊ·n của Burp Proxy, hΓ£y ΔαΊ£m bαΊ£o rαΊ±ng tΓnh nΔng chαΊ·n Δược bαΊt.
Khi mα»t thΓ΄ng bΓ‘o WebSocket Δược gα»i tα»« trΓ¬nh duyα»t hoαΊ·c mΓ‘y chủ, nΓ³ sαΊ½ Δược hiα»n thα» trong tab ChαΊ·n Δα» bαΊ‘n xem hoαΊ·c sα»a Δα»i. NhαΊ₯n nΓΊt Chuyα»n tiαΊΏp - forward Δα» chuyα»n tiαΊΏp tin nhαΊ―n.
Note: You can configure whether client-to-server or server-to-client messages are intercepted in Burp Proxy. Do this in the Options tab, in the Intercept WebSocket Messages options.
Replaying and generating new WebSocket messages
NgoΓ i viα»c chαΊ·n vΓ sα»a Δα»i cΓ‘c tin nhαΊ―n WebSocket mα»t cΓ‘ch nhanh chΓ³ng, bαΊ‘n cΓ³ thα» phΓ‘t lαΊ‘i cΓ‘c tin nhαΊ―n riΓͺng lαΊ» vΓ tαΊ‘o cΓ‘c tin nhαΊ―n mα»i. BαΊ‘n cΓ³ thα» lΓ m Δiα»u nΓ y bαΊ±ng Burp Repeater:
Trong Burp Proxy, hΓ£y chα»n mα»t thΖ° trong lα»ch sα» WebSockets hoαΊ·c trong tab Intercept vΓ chα»n "Send to Repeater" tα»« menu context.
Trong Burp Repeater, giα» ΔΓ’y bαΊ‘n cΓ³ thα» chα»nh sα»a tin nhαΊ―n ΔΓ£ chα»n vΓ gα»i Δi gα»i lαΊ‘i.
BαΊ‘n cΓ³ thα» nhαΊp mα»t tin nhαΊ―n mα»i vΓ gα»i nΓ³ theo mα»t trong hai hΖ°α»ng, tα»i mΓ‘y khΓ‘ch hoαΊ·c mΓ‘y chủ.
Trong bαΊ£ng "History" trong Burp Repeater, bαΊ‘n cΓ³ thα» xem lα»ch sα» của cΓ‘c tin nhαΊ―n ΔΓ£ Δược truyα»n qua kαΊΏt nα»i WebSocket. Δiα»u nΓ y bao gα»m cΓ‘c thΓ΄ng bΓ‘o mΓ bαΊ‘n ΔΓ£ tαΊ‘o trong Burp Repeater vΓ bαΊ₯t kα»³ thΓ΄ng bΓ‘o nΓ o Δược tαΊ‘o bα»i trΓ¬nh duyα»t hoαΊ·c mΓ‘y chủ thΓ΄ng qua cΓΉng mα»t kαΊΏt nα»i.
NαΊΏu bαΊ‘n muα»n chα»nh sα»a vΓ gα»i lαΊ‘i bαΊ₯t kα»³ thΖ° nΓ o trong bαΊ£ng lα»ch sα», bαΊ‘n cΓ³ thα» thα»±c hiα»n viα»c nΓ y bαΊ±ng cΓ‘ch chα»n thΖ° vΓ chα»n "Edit and resend" tα»« menu ngα»― cαΊ£nh.
Manipulating WebSocket connections
CΕ©ng nhΖ° thao tΓ‘c vα»i cΓ‘c thΓ΄ng bΓ‘o WebSocket, ΔΓ΄i khi cαΊ§n phαΊ£i thao tΓ‘c vα»i WebSocket handshake Δα» thiαΊΏt lαΊp kαΊΏt nα»i.
CΓ³ nhiα»u tΓ¬nh huα»ng khΓ‘c nhau trong ΔΓ³ thao tΓ‘c bαΊ―t tay WebSocket cΓ³ thα» cαΊ§n thiαΊΏt:
NΓ³ cΓ³ thα» cho phΓ©p bαΊ‘n tiαΊΏp cαΊn nhiα»u bα» mαΊ·t tαΊ₯n cΓ΄ng hΖ‘n.
Mα»t sα» cuα»c tαΊ₯n cΓ΄ng cΓ³ thα» khiαΊΏn kαΊΏt nα»i của bαΊ‘n bα» ngαΊ―t, do ΔΓ³ bαΊ‘n cαΊ§n thiαΊΏt lαΊp mα»t kαΊΏt nα»i mα»i.
MΓ£ thΓ΄ng bΓ‘o hoαΊ·c dα»― liα»u khΓ‘c trong yΓͺu cαΊ§u bαΊ―t tay ban ΔαΊ§u cΓ³ thα» ΔΓ£ cΕ© vΓ cαΊ§n cαΊp nhαΊt.
BαΊ‘n cΓ³ thα» thao tΓ‘c bαΊ―t tay WebSocket bαΊ±ng Burp Repeater:
Gα»i mα»t tin nhαΊ―n WebSocket tα»i Burp Repeater nhΖ° ΔΓ£ Δược mΓ΄ tαΊ£ .
Trong Burp Repeater, nhαΊ₯p vΓ o biα»u tượng bΓΊt chΓ¬ bΓͺn cαΊ‘nh URL WebSocket. Thao tΓ‘c nΓ y sαΊ½ mα» ra mα»t trΓ¬nh hΖ°α»ng dαΊ«n cho phΓ©p bαΊ‘n ΔΓnh kΓ¨m vΓ o mα»t WebSocket ΔΓ£ kαΊΏt nα»i hiα»n cΓ³, sao chΓ©p mα»t WebSocket ΔΓ£ kαΊΏt nα»i hoαΊ·c kαΊΏt nα»i lαΊ‘i vα»i mα»t WebSocket ΔΓ£ ngαΊ―t kαΊΏt nα»i.
NαΊΏu bαΊ‘n chα»n sao chΓ©p mα»t WebSocket ΔΓ£ kαΊΏt nα»i hoαΊ·c kαΊΏt nα»i lαΊ‘i vα»i mα»t WebSocket ΔΓ£ ngαΊ―t kαΊΏt nα»i, thΓ¬ trΓ¬nh hΖ°α»ng dαΊ«n sαΊ½ hiα»n thα» ΔαΊ§y Δủ chi tiαΊΏt vα» yΓͺu cαΊ§u bαΊ―t tay WebSocket mΓ bαΊ‘n cΓ³ thα» chα»nh sα»a theo yΓͺu cαΊ§u trΖ°α»c khi thα»±c hiα»n bαΊ―t tay.
Khi bαΊ‘n nhαΊ₯p vΓ o "Connect", Burp sαΊ½ cα» gαΊ―ng thα»±c hiα»n quΓ‘ trΓ¬nh handshake ΔΓ£ Δα»nh cαΊ₯u hΓ¬nh vΓ hiα»n thα» kαΊΏt quαΊ£. NαΊΏu kαΊΏt nα»i WebSocket mα»i Δược thiαΊΏt lαΊp thΓ nh cΓ΄ng, thΓ¬ bαΊ‘n cΓ³ thα» sα» dα»₯ng kαΊΏt nα»i nΓ y Δα» gα»i tin nhαΊ―n mα»i trong Burp Repeater.
WebSockets security vulnerabilities
Vα» nguyΓͺn tαΊ―c, trΓͺn thα»±c tαΊΏ, bαΊ₯t kα»³ lα» hα»ng bαΊ£o mαΊt web nΓ o cΕ©ng cΓ³ thα» phΓ‘t sinh liΓͺn quan ΔαΊΏn WebSockets:
ΔαΊ§u vΓ o do ngΖ°α»i dΓΉng cung cαΊ₯p Δược truyα»n ΔαΊΏn mΓ‘y chủ cΓ³ thα» Δược xα» lΓ½ theo nhα»―ng cΓ‘ch khΓ΄ng an toΓ n, dαΊ«n ΔαΊΏn cΓ‘c lα» hα»ng nhΖ° SQL Injection hoαΊ·c XML external entity injection.
Mα»t sα» blind vulnerabilities ΔαΊ‘t Δược thΓ΄ng qua WebSockets chα» cΓ³ thα» Δược phΓ‘t hiα»n bαΊ±ng cΓ‘ch sα» dα»₯ng cΓ‘c kα»Ή thuαΊt ngoΓ i bΔng tαΊ§n (OAST) .
NαΊΏu dα»― liα»u do kαΊ» tαΊ₯n cΓ΄ng kiα»m soΓ‘t Δược truyα»n qua WebSockets tα»i nhα»―ng ngΖ°α»i dΓΉng α»©ng dα»₯ng khΓ‘c, thΓ¬ Δiα»u ΔΓ³ cΓ³ thα» dαΊ«n ΔαΊΏn vul XSS hoαΊ·c cΓ‘c lα» hα»ng phΓa mΓ‘y khΓ‘ch khΓ‘c.
Manipulating WebSocket messages to exploit vulnerabilities
PhαΊ§n lα»n cΓ‘c lα» hα»ng dα»±a trΓͺn ΔαΊ§u vΓ o αΊ£nh hΖ°α»ng ΔαΊΏn WebSockets cΓ³ thα» Δược tΓ¬m thαΊ₯y vΓ khai thΓ‘c bαΊ±ng cΓ‘ch giαΊ£ mαΊ‘o nα»i dung của thΓ΄ng bΓ‘o WebSocket .
VΓ dα»₯: giαΊ£ sα» α»©ng dα»₯ng trΓ² chuyα»n sα» dα»₯ng WebSockets Δα» gα»i tin nhαΊ―n trΓ² chuyα»n giα»―a trΓ¬nh duyα»t vΓ mΓ‘y chủ. Khi ngΖ°α»i dΓΉng nhαΊp tin nhαΊ―n trΓ² chuyα»n, mα»t tin nhαΊ―n WebSocket nhΖ° sau sαΊ½ Δược gα»i ΔαΊΏn mΓ‘y chủ:
Nα»i dung của tin nhαΊ―n Δược truyα»n (mα»t lαΊ§n nα»―a qua WebSockets) tα»i mα»t ngΖ°α»i dΓΉng trΓ² chuyα»n khΓ‘c vΓ Δược hiα»n thα» trong trΓ¬nh duyα»t của ngΖ°α»i dΓΉng nhΖ° sau:
Trong tΓ¬nh huα»ng nΓ y, miα» n lΓ khΓ΄ng cΓ³ quΓ‘ trΓ¬nh xα» lΓ½ hoαΊ·c phΓ²ng thủ ΔαΊ§u vΓ o nΓ o khΓ‘c Δang hoαΊ‘t Δα»ng, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» thα»±c hiα»n mα»t cuα»c tαΊ₯n cΓ΄ng XSS bαΊ±ng chα»©ng vα» khΓ‘i niα»m bαΊ±ng cΓ‘ch gα»i thΓ΄ng bΓ‘o WebSocket sau:
Manipulating the WebSocket handshake to exploit vulnerabilities
Mα»t sα» lα» hα»ng WebSockets chα» cΓ³ thα» Δược tΓ¬m thαΊ₯y vΓ khai thΓ‘c bαΊ±ng manipulating the WebSocket handshake . Nhα»―ng lα» hα»ng nΓ y cΓ³ xu hΖ°α»ng liΓͺn quan ΔαΊΏn lα»i thiαΊΏt kαΊΏ, chαΊ³ng hαΊ‘n nhΖ°:
ΔαΊ·t niα»m tin khΓ΄ng ΔΓΊng chα» vΓ o cΓ‘c tiΓͺu Δα» HTTP Δα» thα»±c hiα»n cΓ‘c quyαΊΏt Δα»nh bαΊ£o mαΊt, chαΊ³ng hαΊ‘n nhΖ° tiΓͺu Δα»
X-Forwarded-For
.CΓ‘c lα»i trong cΖ‘ chαΊΏ xα» lΓ½ phiΓͺn, vΓ¬ bα»i cαΊ£nh phiΓͺn trong ΔΓ³ cΓ‘c thΓ΄ng bΓ‘o WebSocket Δược xα» lΓ½ thΖ°α»ng Δược xΓ‘c Δα»nh bα»i ngα»― cαΊ£nh phiΓͺn của thΓ΄ng bΓ‘o handshake.
Bα» mαΊ·t tαΊ₯n cΓ΄ng Δược giα»i thiα»u bα»i cΓ‘c tiΓͺu Δα» HTTP tΓΉy chα»nh Δược α»©ng dα»₯ng sα» dα»₯ng.
Using cross-site WebSockets to exploit vulnerabilities
Mα»t sα» lα» hα»ng bαΊ£o mαΊt WebSockets phΓ‘t sinh khi kαΊ» tαΊ₯n cΓ΄ng tαΊ‘o kαΊΏt nα»i WebSocket tΓͺn miα»n chΓ©o tα»« mα»t trang web mΓ kαΊ» tαΊ₯n cΓ΄ng kiα»m soΓ‘t. ΔΓ’y Δược gα»i lΓ mα»t cuα»c tαΊ₯n cΓ΄ng cross-site WebSocket hijacking vΓ nΓ³ liΓͺn quan ΔαΊΏn viα»c khai thΓ‘c lα» hα»ng cross-site request forgery (CSRF) trΓͺn mα»t WebSocket handshake. Cuα»c tαΊ₯n cΓ΄ng thΖ°α»ng cΓ³ tΓ‘c Δα»ng nghiΓͺm trα»ng, cho phΓ©p kαΊ» tαΊ₯n cΓ΄ng thα»±c hiα»n cΓ‘c hΓ nh Δα»ng ΔαΊ·c quyα»n thay mαΊ·t cho ngΖ°α»i dΓΉng nαΊ‘n nhΓ’n hoαΊ·c lαΊ₯y dα»― liα»u nhαΊ‘y cαΊ£m mΓ ngΖ°α»i dΓΉng nαΊ‘n nhΓ’n cΓ³ quyα»n truy cαΊp.
What is cross-site WebSocket hijacking?
Cross-site WebSockets hijacking ( cΕ©ng Δược biαΊΏt nhΖ° lΓ cross-origin WebSocket hijacking) liΓͺn quan ΔαΊΏn lα» hα»ng giαΊ£ mαΊ‘o yΓͺu cαΊ§u liΓͺn trang (CSRF) trong quΓ‘ trΓ¬nh WebSocket handshake. NΓ³ phΓ‘t sinh khi yΓͺu cαΊ§u WebSocket handshake chα» dα»±a vΓ o cookie HTTP Δα» xα» lΓ½ session vΓ khΓ΄ng chα»©a bαΊ₯t kα»³ CSRF token nΓ o hoαΊ·c cΓ‘c giΓ‘ trα» khΓ΄ng thα» ΔoΓ‘n trΖ°α»c khΓ‘c.
KαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» tαΊ‘o mα»t trang web Δα»c hαΊ‘i trΓͺn miα»n riΓͺng của chΓΊng, trang nΓ y sαΊ½ thiαΊΏt lαΊp kαΊΏt nα»i WebSocket chΓ©o trang tα»i α»©ng dα»₯ng dα» bα» tαΊ₯n cΓ΄ng. Ứng dα»₯ng sαΊ½ xα» lΓ½ kαΊΏt nα»i trong bα»i cαΊ£nh (context session) phiΓͺn của ngΖ°α»i dΓΉng nαΊ‘n nhΓ’n vα»i α»©ng dα»₯ng.
Sau ΔΓ³, trang của kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» gα»i cΓ‘c tin nhαΊ―n tΓΉy Γ½ ΔαΊΏn mΓ‘y chủ thΓ΄ng qua kαΊΏt nα»i vΓ Δα»c nα»i dung của cΓ‘c tin nhαΊ―n nhαΊn Δược tα»« mΓ‘y chủ. Δiα»u nΓ y cΓ³ nghΔ©a lΓ , khΓ΄ng giα»ng nhΖ° CSRF thΓ΄ng thΖ°α»ng, kαΊ» tαΊ₯n cΓ΄ng cΓ³ Δược sα»± tΖ°Ζ‘ng tΓ‘c hai chiα»u vα»i α»©ng dα»₯ng bα» xΓ’m nhαΊp.
What is the impact of cross-site WebSocket hijacking?
Mα»t cuα»c tαΊ₯n cΓ΄ng cross-site Websocket hijacking thΓ nh cΓ΄ng thΖ°α»ng sαΊ½ cho phΓ©p hacker:
Perform unauthorized actions masquerading as the victim user. NhΖ° vα»i CSRF thΓ΄ng thΖ°α»ng, kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» gα»i cΓ‘c thΓ΄ng bΓ‘o tΓΉy Γ½ ΔαΊΏn α»©ng dα»₯ng phΓa mΓ‘y chủ. NαΊΏu α»©ng dα»₯ng sα» dα»₯ng thΓ΄ng bΓ‘o WebSocket do mΓ‘y khΓ‘ch tαΊ‘o Δα» thα»±c hiα»n bαΊ₯t kα»³ hΓ nh Δα»ng nhαΊ‘y cαΊ£m nΓ o, thΓ¬ kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» tαΊ‘o thΓ΄ng bΓ‘o phΓΉ hợp trΓͺn nhiα»u miα»n vΓ kΓch hoαΊ‘t cΓ‘c hΓ nh Δα»ng ΔΓ³.
Retrieve sensitive data that the user can access. KhΓ΄ng giα»ng nhΖ° CSRF thΓ΄ng thΖ°α»ng, chiαΊΏm quyα»n Δiα»u khiα»n WebSocket chΓ©o trang cho phΓ©p kαΊ» tαΊ₯n cΓ΄ng tΖ°Ζ‘ng tΓ‘c hai chiα»u vα»i α»©ng dα»₯ng dα» bα» tαΊ₯n cΓ΄ng qua WebSocket bα» tαΊ₯n cΓ΄ng. NαΊΏu α»©ng dα»₯ng sα» dα»₯ng cΓ‘c thΓ΄ng bΓ‘o WebSocket do mΓ‘y chủ tαΊ‘o Δα» trαΊ£ lαΊ‘i bαΊ₯t kα»³ dα»― liα»u nhαΊ‘y cαΊ£m nΓ o cho ngΖ°α»i dΓΉng, thΓ¬ kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» chαΊ·n cΓ‘c thΓ΄ng bΓ‘o ΔΓ³ vΓ thu thαΊp dα»― liα»u của ngΖ°α»i dΓΉng nαΊ‘n nhΓ’n.
Performing a cross-site WebSocket hijacking attack
VΓ¬ mα»t cuα»c tαΊ₯n cΓ΄ng chiαΊΏm quyα»n Δiα»u khiα»n WebSocket trΓͺn nhiα»u trang web vα» cΖ‘ bαΊ£n lΓ mα»t lα» hα»ng CSRF trΓͺn mα»t WebSocket handshake, nΓͺn bΖ°α»c ΔαΊ§u tiΓͺn Δα» thα»±c hiα»n mα»t cuα»c tαΊ₯n cΓ΄ng lΓ xem xΓ©t cΓ‘c WebSocket handshake mΓ α»©ng dα»₯ng thα»±c hiα»n vΓ xΓ‘c Δα»nh xem chΓΊng cΓ³ Δược bαΊ£o vα» chα»ng lαΊ‘i CSRF hay khΓ΄ng.
XΓ©t vα» cΓ‘c Δiα»u kiα»n thΓ΄ng thΖ°α»ng Δα»i vα»i cΓ‘c cuα»c tαΊ₯n cΓ΄ng CSRF , bαΊ‘n thΖ°α»ng cαΊ§n tΓ¬m mα»t thΓ΄ng bΓ‘o bαΊ―t tay chα» dα»±a vΓ o cookie HTTP Δα» xα» lΓ½ phiΓͺn vΓ khΓ΄ng sα» dα»₯ng bαΊ₯t kα»³ mΓ£ thΓ΄ng bΓ‘o nΓ o hoαΊ·c cΓ‘c giΓ‘ trα» khΓ΄ng thα» ΔoΓ‘n trΖ°α»c khΓ‘c trong tham sα» yΓͺu cαΊ§u.
VΓ dα»₯: yΓͺu cαΊ§u WebSocket handshake sau ΔΓ’y cΓ³ thα» dα» bα» CSRF, vΓ¬ mΓ£ thΓ΄ng bΓ‘o phiΓͺn duy nhαΊ₯t Δược truyα»n trong cookie:
Note: TiΓͺu Δα» Sec-WebSocket-Key
chα»©a mα»t giΓ‘ trα» ngαΊ«u nhiΓͺn Δα» ngΔn lα»i tα»« bα» nhα» Δα»m proxy vΓ khΓ΄ng Δược sα» dα»₯ng cho mα»₯c ΔΓch xΓ‘c thα»±c hoαΊ·c xα» lΓ½ session.
NαΊΏu yΓͺu cαΊ§u WebSocket handshake dα» bα» tαΊ₯n cΓ΄ng CSRF thΓ¬ trang web của kαΊ» tαΊ₯n cΓ΄ng cΓ³ thα» thα»±c hiα»n yΓͺu cαΊ§u chΓ©o trang Δα» mα» mα»t WebSocket trΓͺn trang dα» bα» tαΊ₯n cΓ΄ng. Δiα»u gΓ¬ xαΊ£y ra tiαΊΏp theo trong cuα»c tαΊ₯n cΓ΄ng phα»₯ thuα»c hoΓ n toΓ n vΓ o logic của α»©ng dα»₯ng vΓ cΓ‘ch α»©ng dα»₯ng sα» dα»₯ng WebSockets . Cuα»c tαΊ₯n cΓ΄ng cΓ³ thα» liΓͺn quan ΔαΊΏn:
Gα»i tin nhαΊ―n WebSocket Δα» thα»±c hiα»n cΓ‘c hΓ nh Δα»ng trΓ‘i phΓ©p thay mαΊ·t cho ngΖ°α»i dΓΉng nαΊ‘n nhΓ’n.
Gα»i tin nhαΊ―n WebSocket Δα» truy xuαΊ₯t dα»― liα»u nhαΊ‘y cαΊ£m.
ΔΓ΄i khi, chα» cαΊ§n Δợi cΓ‘c tin nhαΊ―n ΔαΊΏn cΓ³ chα»©a dα»― liα»u nhαΊ‘y cαΊ£m.
How to secure a WebSocket connection
Δα» giαΊ£m thiα»u nguy cΖ‘ lα» hα»ng bαΊ£o mαΊt phΓ‘t sinh vα»i WebSockets, hΓ£y sα» dα»₯ng cΓ‘c nguyΓͺn tαΊ―c sau:
Sα» dα»₯ng
wss://
giao thα»©c (WebSockets qua TLS).MΓ£ cα»©ng URL của Δiα»m cuα»i WebSockets vΓ chαΊ―c chαΊ―n khΓ΄ng kαΊΏt hợp dα»― liα»u do ngΖ°α»i dΓΉng kiα»m soΓ‘t vΓ o URL nΓ y.
BαΊ£o vα» thΓ΄ng bΓ‘o bαΊ―t tay WebSocket chα»ng lαΊ‘i CSRF, Δα» trΓ‘nh cΓ‘c lα» hα»ng chiαΊΏm quyα»n Δiα»u khiα»n WebSocket trΓͺn nhiα»u trang web.
Xα» lΓ½ dα»― liα»u nhαΊn Δược qua WebSocket lΓ khΓ΄ng ΔΓ‘ng tin cαΊy theo cαΊ£ hai hΖ°α»ng. Xα» lΓ½ dα»― liα»u mα»t cΓ‘ch an toΓ n trΓͺn cαΊ£ mΓ‘y chủ vΓ mΓ‘y khΓ‘ch, Δα» ngΔn chαΊ·n cΓ‘c lα» hα»ng dα»±a trΓͺn ΔαΊ§u vΓ o nhΖ° SQL injection vΓ cross-site scripting .
Last updated