Shikata Ga Nai

Private? There is no such things.

Manipulating the WebSocket handshake to exploit vulnerabilitiesをやってみた

Hello there, ('ω')ノ

 

ページに移動して、Live chatを。

 

f:id:ThisIsOne:20210203132759p:plain

 

まずは、動作確認を。

 

f:id:ThisIsOne:20210203132853p:plain

 

f:id:ThisIsOne:20210203133122p:plain

 

リクエストの確認と。

 

f:id:ThisIsOne:20210203133210p:plain

 

WebSocktの確認を。

 

f:id:ThisIsOne:20210203133232p:plain

 

再度、新しいメッセージを送信して。

 

f:id:ThisIsOne:20210203133318p:plain

 

インターセプトして、ペイロードに変更して。

 <img src=1 onerror='alert(1)'>

 

f:id:ThisIsOne:20210203133441p:plain

 

もしくは、いつものリピータを利用して。

 

f:id:ThisIsOne:20210203134058p:plain

 

ペイロードに書き換えてSendする方法もあるかと。

 

f:id:ThisIsOne:20210203134127p:plain

 

Live chatをクリックされると、IPアドレスが拒否されるので。

 

f:id:ThisIsOne:20210203134253p:plain

 

ページをリロードして、インターセプトして。

ウェブサーバに接続するクライアントの送信元IPアドレスを細工し追加して。

 X-Forwarded-For: 1.1.1.1

 

f:id:ThisIsOne:20210203134438p:plain

 

全てのリクエストに追加していくとIPアドレスの拒否を回避できて。

 X-Forwarded-For: 1.1.1.1

 

f:id:ThisIsOne:20210203134509p:plain

 

この手をつかって、下記のペイロードに置き換えると。

 <iframe src='jAvAsCripT:alert`1`'></iframe>

 

f:id:ThisIsOne:20210203135258p:plain

 

スクリプトが実行されて。

 

f:id:ThisIsOne:20210203135405p:plain

 

ちなみにWebSocketもリクエストと同様にリピータ機能が使えて。

 

f:id:ThisIsOne:20210203141443p:plain

 

リピータ機能の中でメッセージを送信すると。

 

f:id:ThisIsOne:20210203141519p:plain

 

ページに反映されて。

 

f:id:ThisIsOne:20210203141537p:plain

 

ペイロードを実行することもできて。

 

f:id:ThisIsOne:20210203141634p:plain

 

f:id:ThisIsOne:20210203144028p:plain

 

ソケット接続が切れた際には、Reconnectボタンが表示されるようで。

 

f:id:ThisIsOne:20210203143855p:plain

 

Best regards, (^^ゞ