Shikata Ga Nai

Private? There is no such things.

Weak Cryptography to Account Takeover’sを訳してみた

Hello there, ('ω')ノ

 

アカウントの乗っ取りを説明するための弱い暗号化を。

 

脆弱性:

 暗号化の問題

 アカウントの乗っ取り

 IDOR

 

記事:

 https://vasuyadav0786.medium.com/weak-cryptography-to-account-takeovers-87782224ed0d

 

ツール:

 Burp Suite

 

今回は、弱い暗号化によって可能になって。

アカウントの乗っ取りにつながった発見について説明することに。


最初に、暗号化とは何か。

 暗号化は、通常のプレーンテキストを理解できないテキストに(またはその逆に)。

 変換するプロセスに関連付けられていて。

 これは、特定の形式でデータを保存および送信する方法で。

 対象のユーザのみがデータを読み取って処理できるようにして。

 

さて、弱い暗号化とは何か。

 弱い暗号は、長さが不十分なキーを使用する暗号化/復号化アルゴリズムとして。

 定義されて。

 暗号化/復号化アルゴリズムで、キーに不十分な長さを使用すると。

 暗号化スキームが破られる(つまりクラックされる)可能性(または確率)が。

 広がって。

 

今回のターゲットを「cantdisclose.com」と呼ぶことに。

アカウントのパスワードのリセットをリクエストしたところ。

下記のようにメールにリンクがあって。

 

f:id:ThisIsOne:20211009104510p:plain

 

最後に「==」が表示されたらすぐにBase64である可能性があると思ったので。

それをコピーしてデコーダに移動して、トークンを貼り付けたところ。

結果は、下記のようになって。

 

f:id:ThisIsOne:20211009104531p:plain

 

再現手順:

1.この目的のために2つのアカウントを使用して。

   vasuyadav1@gmail.com ⇦ 攻撃者のアカウント

   vasuyadav2@gmail.com ⇦ 被害者のアカウント

 

2.1つのアカウントのパスワードのリセットをリクエストして。

 Burp Suiteでキャプチャして。

 

3.Intruderに送信して、電子メールパラメータを選択して。

 被害者の電子メールを追加して。

 サーバにリクエストを非常に高速で送信すると。

 送信時間が両方のアカウントでほぼ同じになるためで、これを使用して。

 

4.攻撃者のアカウントを確認して、リンクをコピーして。

 

5. index/の後の文字列をBase64としてデコードして。

 

6.例:「senttime/15935586556/token/vasuyadav1@gmail.com

 

7.被害者のメールアドレスvasuyadav2@gmail.comでこれを変更して。

 送信時刻を同じにして。

 「senttime/15935586556/tokenvasuyadav2@gmail.com」を。

 Base64にエンコードして。

 

 タイムスタンプ=1593558655
 ⇩
 日時(Tokyo)=2020/07/01 08:10:55

 

8.エンコードされた文字列は、下記のようになって。

 

9.https://www.cantdisclose.com/resetpassword/index/c2VudHRpbWUvMTU5MzU4NjU1Ny90b2tlbi92YXN1eWFkYXYxOTg0QGdtYWlsLmNvbQ==。

 

f:id:ThisIsOne:20211009110344p:plain

 

10.これが機能しない場合は、送信時刻を1または2変更して。

 同じプロセスを実行してみて。

 

11.私の場合、送信時間を1変更すると機能し、ブームはメールで送信されたリンクを確認せずに他のアカウントのパスワードを変更することができました。

 

それでは、OAUTHの実装にあった2番目の発見について。

OAUTHの使用中に送信されたリクエストと。

認証がどのように行われているかを確認していたところ。

リクエストは、下記のようになって。

 

f:id:ThisIsOne:20211009104607p:plain

 

リクエストには、Authorizationヘッダが含まれいて。

Base64も使用しているので、簡単に復号化できて。

ここでも同じことを行うことに。

つまり、メールを他のアカウントのメールに変更して。

Base64にエンコードしてから、そのリクエストを転送するだけで。

他のアカウントにログインできて。

 

f:id:ThisIsOne:20211009104632p:plain

 

Best regards, (^^ゞ