SRC アカウントのパスワードをリセットする 6 つの方法

1.SMS認証コードの返信

1. 原則

携帯電話を介してパスワードを取得します。応答パッケージには SMS 確認コードが含まれています

2.ケース

Web サイトは、パスワードを取得するために携帯電話を使用することを選択します。

送信ボタンをクリックして戻りパケットを傍受すると、次の図に示すように SMS 検証コードが表示されます。

3. 修理のご提案

応答パケットから SMS 認証コードを削除します。

2. ユーザー名、ユーザー ID、または携帯電話番号を変更してアカウントのパスワードをリセットします

1. 原則

携帯電話を介してパスワードを取得するには、通常、SMS 認証コードの認証が必要です (ここでは、ブラストまたはバイパスを試みることができます)。正しい携帯電話番号と正しい SMS 認証コードを入力し、パスワードをリセットする最後のステップ、つまり新しいパスワードを入力し、パスワードを入力すると、ポスト データ パケットが送信されます。サーバーには現在のユーザーの ID 情報が含まれている必要があります。

ユーザー名またはユーザー ID が現在の携帯電話番号または SMS 認証コードに関連付けられていない場合、一般的な Web サイトはユーザー名またはユーザー ID を通じてユーザーの身元を識別します。

つまり、サーバーはユーザー名とIDが存在するかどうかのみを検証し、ユーザーが現在の携帯電話番号と一致するかどうかは検証しないため、ユーザー名とIDを変更することで他のユーザーのパスワードを変更できます。

もちろん、変更できる箇所はパスワードを取得するためのデータパッケージに限定されるものではなく、例えばデータを変更する箇所にそのような抜け穴が存在する場合もある。

2.ケース

たとえば、Web サイトがユーザー データを変更し、アカウントのパスワードが変更された場合、傍受されたデータ パケットは次のとおりです。

 
 

POST /user/info_do HTTP/1.1

ホスト: www.XXX.com

ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:59.0) Gecko/20100101 Firefox/59.0

受け入れる: */*

受け入れ言語: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip、deflate

参照: http://www.XXX.com/user/info_view

コンテンツタイプ: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest

コンテンツの長さ: 211

クッキー: yunsuo_session_verify=9341a54b945886e9485ff54a17650468; PHPSESSID=sgbibaqe7f8f6okerps8jip916; sdrcユーザーロックカウント=1; sdrcUseruserid=14943

接続: キープアライブ

パスワード=A123456&email=1%40qq.com&address=1&postcode=1&mobile=13888888888&sex=man&birthday=0000-00-00°ree=collegeLT&testsite=1&post=1&__hash__=b0b15b067dea00bd34fd39421b7ef684_efc2399e 5c4b2071f261e75fe3362d4fa

分析と実験の結果、データ パケット内の sdrcUseruserid の値が現在のユーザー ID を識別するために使用されていることがわかりました。この ID は任意に変更できるのでしょうか?

答えは「はい」です。ID 値を 14942 と 14941 に正常に変更できます。スクリーンショットは次のとおりです。

3. 修理のご提案

  • ユーザーが個人情報を操作(読み取り、変更)する場合、サーバーは不正な操作を防ぐために現在のユーザーの身元を確認する必要があります。

  • ユーザーの身元を識別するために使用される名前または ID にはカスタム暗号化を使用することも、これらのパラメーターを非表示にすることもでき、ユーザー情報は Cookie から直接取得できます。

  • パスワードを変更する場合、ユーザーはまず古いパスワードを確認するか、SMS 認証を使用する必要があります。

  • ユーザーが携帯電話番号を変更する場合、最初に元の携帯電話番号を確認する必要があります。

3. 応答パケットを変更してアカウントのパスワードをリセットします。

1. 原則

携帯電話を介してパスワードを取得するには、通常、SMS 検証コードの検証が必要であり、サーバーは入力された検証コードが正しいかどうかをクライアントに伝える必要があります。

クライアントが真の情報を受け取った場合、クライアントはサーバーに真の情報を使用して次のステップに進むように要求し、サーバーはクライアントが真の情報を受け取った後に次のステップに進むことを許可します。

逆に、それが虚偽の情報である場合、サーバーはクライアントが次のステップに進むことを許可しません。

言い換えれば、次のステップに進むための鍵は、サーバーがクライアントから真の情報を受信できるようにすることです。

burpsuite の助けを借りて、サーバーからクライアントに返される情報を変更することができます。このようにして、SMS 検証コードを入力し、サーバーから返される誤った情報を true に変更して、SMS の検証をバイパスできます。検証コード。

2.ケース

次は、パスワードを取得するプロセスです。正しいユーザー名を入力し、2 番目のステップに進みます。このとき、SMS 認証コードを入力する必要があります。ここでは、SMS 認証コード 123456 をランダムに入力し、サーバーから返される情報は次のように表示されます。

戻りパケットの false を true に変更すると、SMS 検証コードの検証をバイパスでき、結果は次の図に示されています。

3. 修理のご提案

  • サーバーは検証コードを検証し、結果が true の場合は、検証結果をクライアントに個別に返すことなく、次のステップに直接スキップします。

  • 新しいパスワードを入力してサーバーに送信します。サーバーは、現在のユーザー名、携帯電話番号、SMS 確認コードに対して 2 回目の一致検証を実行します。これらがすべて true の場合にのみ、変更が成功します。

4. 認証手順をスキップして、アカウントのパスワードをリセットします。

1. 原則

パスワード回復プロセスには通常、次の 4 つの手順が必要です。

1. ユーザー名を確認します。

2. SMS 認証コードを確認します。

3. 新しいパスワードを入力します。

4. リセットは成功しました。

これら 4 つのステップは密接に関連しており、相互に関連している必要があります。最初のステップの検証に合格した場合にのみ、次のステップに進むことができます。各ステップ間の相関検証が行われていない場合、主要な検証ステップがスキップされる可能性があり、その結果、アカウントのパスワードをリセットします。

2.ケース

Web サイトがパスワードを取得するには 4 つの手順があります。最初の手順は正しいユーザー名を入力することであり、2 番目の手順は携帯電話番号と正しい確認コードを入力することであり、サーバーによって返される傍受されたデータ パケットは次のとおりです。

 
 

<html><head><title>オブジェクトが移動されました</title></head><body>

<h2>オブジェクトは<a href="/Personal/sys/getpasswordreset">ここ</a>に移動されました。</h2>

</body></html>

上記のデータ パケットは、パスワード入力インターフェイスにジャンプするために使用されます。

認証コードを入力して、パスワード入力インターフェイスに直接アクセスできるかどうかを推測したところ、結果は「はい」となり、パスワードのリセットが成功しました。

分析後、ここでの成功の鍵は、ページがパスワード入力インターフェイスにジャンプすることです。新しいパスワードを入力してサーバーに送信すると、サーバーは現在のユーザー ID の二次検証を実行せず、単にユーザーを取得します。名前または ID と新しいパスワードを入力すると、アカウント パスワードをリセットするための SMS 認証コードの検証がスキップされます。

3. 修理のご提案

  • 各ステップでは前のステップが検証されます。

  • 最後に、新しいパスワードを送信するときは、現在のユーザー名または ID、携帯電話番号、SMS 確認コードを 2 回確認する必要があります。

5. パスワードのリセット リンクのトークン値が検証されていないか無効であるため、アカウントのパスワードがリセットされます。

1. 原則

メールボックスを使用してパスワードをリセットすると、サーバーはパスワードをリセットするためのリンクをメールボックスに送信します。このリンクには、現在のユーザーの ID 情報 (ユーザー名やユーザー ID など) とランダムに生成されたトークン情報 (トークンが存在しない場合) が含まれます。値が検証されていない場合、または検証後に無効にならない場合は、ユーザー名またはユーザー ID を変更することでアカウントのパスワードをリセットできます。

2.ケース

Web サイトが電子メールを使用してパスワードを取得する場合、サーバーから電子メールに送信されるリンクは次のとおりです。

 
 

http://www.xxx.com/GetPwd.aspx?q=0x0531387a5a6c1227e4d6ba0ce16dc72e&r=3244166

ランダムに生成された q 値は未検証または検証済みですが、検証後は無効ではないため、再利用でき、最終的には、r を他のユーザー ID に変更して他のユーザーのパスワードをリセットするだけで済みます。

3. 修理のご提案

  • サーバーはクライアントによって送信されたトークン値を検証します。

  • 繰り返し使用されないように、トークン値は一度使用した後は無効になるようにしてください。

  • ユーザー ID のカスタム暗号化。

  • ユーザー ID に従って生成されたトークン値を使用してユーザーを識別します。リンクにはユーザー ID は含まれません。

6. パスワードを取得するための SMS 認証コードを送信すると、任意のアカウントのパスワードをリセットできます。

1. 原則

パスワードを取得するときに、桁数の少ない SMS 認証コードが使用されているか、認証コードに有効な期限がないため、攻撃者は自動ツールを使用して一定の時間内に SMS 認証コードを爆破して取得し、その結果、パスワードがリセットされます。任意のアカウントのパスワード。

2.ケース

Web サイトがパスワードを取得するときに SMS 検証コードを使用するデータ パケットは次のとおりです。

 
 

コード=5000&u=13888888888&チェック=dc5b94101cb4f23a9ce6ae71197fc5de&a=5

以下の図に示すように、ここでコードをブラストできます。

3. 修理のご提案

  • 検証コードは一定の複雑さを満たしており、検証コードの有効時間を制限します。

  • トークン値を使用して SMS 検証コードのデータ パケットを検証し、自動ツールの爆発を防ぐために検証します。

おすすめ

転載: blog.csdn.net/weixin_52501704/article/details/129223819