Hello there, ('ω')ノ
アカウントの乗っ取りを説明するための弱い暗号化を。
脆弱性:
暗号化の問題
アカウントの乗っ取り
IDOR
記事:
https://vasuyadav0786.medium.com/weak-cryptography-to-account-takeovers-87782224ed0d
ツール:
Burp Suite
今回は、弱い暗号化によって可能になって。
アカウントの乗っ取りにつながった発見について説明することに。
最初に、暗号化とは何か。
暗号化は、通常のプレーンテキストを理解できないテキストに(またはその逆に)。
変換するプロセスに関連付けられていて。
これは、特定の形式でデータを保存および送信する方法で。
対象のユーザのみがデータを読み取って処理できるようにして。
さて、弱い暗号化とは何か。
弱い暗号は、長さが不十分なキーを使用する暗号化/復号化アルゴリズムとして。
定義されて。
暗号化/復号化アルゴリズムで、キーに不十分な長さを使用すると。
暗号化スキームが破られる(つまりクラックされる)可能性(または確率)が。
広がって。
今回のターゲットを「cantdisclose.com」と呼ぶことに。
アカウントのパスワードのリセットをリクエストしたところ。
下記のようにメールにリンクがあって。
最後に「==」が表示されたらすぐにBase64である可能性があると思ったので。
それをコピーしてデコーダに移動して、トークンを貼り付けたところ。
結果は、下記のようになって。
再現手順:
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==。
10.これが機能しない場合は、送信時刻を1または2変更して。
同じプロセスを実行してみて。
11.私の場合、送信時間を1変更すると機能し、ブームはメールで送信されたリンクを確認せずに他のアカウントのパスワードを変更することができました。
それでは、OAUTHの実装にあった2番目の発見について。
OAUTHの使用中に送信されたリクエストと。
認証がどのように行われているかを確認していたところ。
リクエストは、下記のようになって。
リクエストには、Authorizationヘッダが含まれいて。
Base64も使用しているので、簡単に復号化できて。
ここでも同じことを行うことに。
つまり、メールを他のアカウントのメールに変更して。
Base64にエンコードしてから、そのリクエストを転送するだけで。
他のアカウントにログインできて。
Best regards, (^^ゞ