脆弱性マイニングのアイデア SMS 検証コードに関連する論理的脆弱性

脆弱性マイニングのアイデア - SMS 検証コードに関連する論理的脆弱性

この記事では、SMS 検証コードに関連する論理の抜け穴を学び、論理の抜け穴に対するいくつかのマイニング テクニックを紹介します。これらはインターネット上の有力者によってまとめられているため、読者はエンタープライズ SRC の抜け穴マイニング トレインをさらに詳しく調べることができます。考え。

この記事をブックマークして、SMS 検証コード ロジックの脆弱性をマイニングするときに、この記事のマイニング手法に 1 つずつ対応してみてください。

脆弱性の概要

脆弱性マイニングでは、ログイン、登録、パスワードの取得、クーポンの受け取り、情報の変更などの検証コード機能を備えた Web サイトによく遭遇しますが、そのほとんどすべてが検証コードを取得するために使用され、検証コードは一般的に 4 です。以下の手法の多くは、企業の SRC 脆弱性監査の提出の成功率を高めることを目的としています。

検証コードの脆弱性については、概ね以下のとおりです。

1. 認証コードのブラスト
2. 認証コードのエコー
3. 認証コードは携帯電話との認証関係に関連付けられていない
4. 返信パケットを変更して認証コードをバイパスする
5. 認証コードの転送
6. 認証を使用したログインコード
7. 空の認証コードでログイン
8 、固定認証コード ログイン
9、認証コード爆撃

ロジックの詳細な脆弱性

認証コードの爆発

**脆弱性の原則:** 一部の認証コード機能については、サーバーが時間と回数を制限していないため、爆発する可能性があります。単純なシステムには直接爆破の可能性がありますが、保護されているシステムでも爆破するにはいくつかのバイパスを通過する必要があり、一般的な認証コードは 4 桁または 6 桁です。

4 桁の純粋なデジタル認証コードの場合: 0000 ~ 9999 の場合、10,000 件のケースがあり、BP は 5 分以内に完全に実行できます。これは一般的な認証コード時間と一致しています。

6 桁の純粋なデジタル認証コードの場合: 000000 ~ 999999 の場合、1,000,000 件があり、BP は 5 分以内に完了できないため、セグメント ブラストが必要です

掘削作業

検証コードのある場所を見つけてパケットをキャプチャし、爆破モジュールに送信し、スナイパーモードを使用して爆破します。

4桁の認証コードの爆発

画像-20230808171552379

6桁の認証コードの爆破

6桁の認証コードの発破量が大きすぎるため、5分以内に発破が完了できないため、分割発破を使用する必要があります。分割発破は、端的に言えば、監査人をブラフするためのものです。自分の携帯電話番号を入力して確認コードを送信し、確認コードを受信した後、受信した確認コードが 485625 であるとします。BP ブラストを使用する場合は、より狭い範囲を設定できます。たとえば、480000 ~ 489999 ですが、この範囲は10000 中間のケースでは、5 分以内に爆発する可能性があり、その後、スクリーンショットを撮って脆弱性を提出することができます。これにより、監査人にブラフをかける可能性が高く、たとえ拒否されたとしても、理論を試すことができます。

画像-20230808172618860

掘削スキル

  1. 一般に、資産を簡単に検索できる抜け穴はありません。
  2. アプレット、アプリ、その他の詳細なページなどの非表示のページを見つけます。たとえば、フェスティバルごとに、多くのアプリ、アプレットなどに新しいアクティビティがあり、広告の形でポップアップします。これらは一時的なものである可能性があります。機能、またはギフトパッケージなどを受け取るために認証コードを入力すると、抜け穴がある可能性が高くなります
  3. 6桁の認証コードについては、分割クラッキング手法を使用できます。

認証コードのエコー

**脆弱性の原理: **検証コード エコーとは、データ パケットの送信時に検証コードが格納され、エコーされたデータ パケット内のデータを観察することで検証コードを見つけることができることを意味します。

脆弱性のケース

1. 返されたデータ パケットに検証コードが存在する

画像-20230808173904837

2. 返信パケットには検証コードが含まれていますが、暗号化されています。

画像-20230808174036623

復号化を試みることができます。

画像-20230808174123166

3. 返されたデータ パケットのヘッダーが存在する場合もあります。

画像-20230808174233027

掘削作業

1. 認証コードが存在する場所を開き、携帯電話番号を入力し、クリックして認証コードを送信し、パケットをキャプチャします

2. 応答パケットをインターセプトし、テストのためにデータ パケットをリピータに送信し、データ パケットに関連する検証コード情報が含まれているかどうかを監視するように設定します。

画像-20230808174541740

3. [送信] をクリックすると、応答パケットがインターセプトされ、応答パケットが分析されます。一部のデータは暗号化されており、一部の情報は Cookie などのデータ パケットのヘッダーに存在します。

画像-20230808174622954

掘削スキル

  1. 一般に、資産が検索しやすい場所にはこの脆弱性はありません。
  2. アプリ、アプレット、その他の詳細なページなどの隠れたページを見つける
  3. 返されたデータ パケットをより注意深く観察し、データ パケットのヘッダーやデータ、その他の情報を注意深く観察してください。

認証コードは携帯電話に関連付けられていません

** 脆弱性の原則: ** バックエンドは検証コードのみを検証し、携帯電話番号と検証コードをバインドしていませんでした。

掘削作業:

必要なのは、2 つ以上の携帯電話番号を用意し、パスワードを取得する場所またはログインする場所を見つけることだけです。インターフェイスの機能は次のようになります。

画像-20230816200508209

自分の携帯電話番号を入力し、認証コードを取得した後、別の携帯電話番号を使用してログインします

掘削スキル

  1. 別の電話番号に置き換えてみてください
  2. 発散的思考、テストのためのさまざまな機能ポイントを探す

返却パッケージを変更して検証コードをバイパスする

**脆弱性の原則:** 一部の Web サイトでは、戻りパケットによって認証が行われます。たとえば、フロントエンドは、応答の結果が true か false、0 か 1 かを判断します。true または 1 であれば、認証は成功したことになります。返されたパッケージ内の一部の機密用語 (結果、コード、失敗など) を変更することで、検証コードをバイパスできます。

掘削作業

検証コードを入力し、BP を使用してパケットをキャプチャし、応答パケットを傍受し、応答パケットの値を注意深く確認し、機密用語が含まれている場合は変更を試みます。

掘削スキル

  1. 検索、試行、観察が容易ではないアセットに適しており、人気のない Web サイトを見つける成功率が高くなります。
  2. 0 が 1 または -1 に変更されるか、正の数が無限に大きく (9999...)、負の数が無限に小さい (-9999...) ことがわかります。
  3. falseをtrueに変更します
  4. 500~200
  5. 変化は失敗から成功へ

認証コードの転送

**脆弱性の原則:** 一部の開発者は、配列を使用して携帯電話番号を受信し、その携帯電話番号に検証コードを一緒に送信しますが、このとき、2 つの携帯電話番号に対応する検証コードは同じであるため、 2 つの携帯電話番号を入力できます。1 つは自分のもの、もう 1 つは他人のものであり、自分が受け取った認証コードは他人のものと同じであり、認証コードを盗むという目的を達成することができます。

脆弱性のケース

画像-20230816203009764

2 台の携帯電話で受信した認証コードは同じであることがわかります。したがって、認証コードを受信した後、自分の携帯電話番号と管理者の携帯電話番号を入力すると、管理者の認証コード

画像-20230816202815434

掘削作業

BP をオンにしてパケットをキャプチャし、携帯電話番号を入力し、[認証コードの送信] をクリックして傍受し、リクエストをリピータに送信します。複数の携帯電話番号を変更してから送信し、携帯電話が認証を受信するかどうかを確認します。コード。

掘削スキル

二重書き込みバイパス:

たとえば、フロントエンドによって送信される携帯電話番号の形式はphone=122222ですが、リクエストパケット内で次のように変更できます:phone=12222 1333、phone=1222,1333、またはphone=1222&&phone=13333

通常は get リクエストですが、このときは次の 2 行を直接記述してみてください。

phone=12222
phone=13333

任意の確認コードによるログイン

**脆弱性の原理:** 一部の Web サイトやアプリ、小さなプログラムには検証コードの機能がありますが、それらは検証コードを送信するだけの偽物であり、検証のためのビジネス ロジックは記述されていません。一般に、新しく立ち上げられたシステムでよく見られます。一部の開発者は、テストの便宜のために、検証コードの検証に注釈を付け、その結果、検証コードによるログインが行われるためです。

掘削作業

携帯電話番号を入力して認証コードを送信し、任意に認証コードを入力してログインします

掘削スキル

そのような抜け穴がある可能性のあるアプリ、小規模プログラム、新しく立ち上げられたビジネス、またはテスト ビジネスを見つけます。

ログインするには確認コードが空です

脆弱性の原則:ログインするには検証コードが空です。検証コードがバックグラウンドで受信される場合、検証コードはフィルタリングされず、null 値はバイパスできます。

掘削作業

通常どおりクリックして検証コードを送信し、次にログインまたはその他の機能をクリックしてリクエストをキャプチャおよびインターセプトし、検証コードの対応する値を変更してみます。この値は null、-1、true、などに変更できます。

空の配列など、または Cookie を保持している場合は、Cookie フィールドを削除して試してください

掘削スキル

次の例を使用して、検証コードの値を変更できます。

  1. ヌル
  2. -1
  3. -999999
  4. 1.1
  5. []
  6. 真実
  7. 成功
  8. ヌル
  9. または Cookie フィールドを削除します

試してみてください。

確認コードによるログインを修正しました

** 脆弱性の原則: ** 一部の開発者は、テストを容易にするために、検証に固定の検証コードを使用しています。

掘削スキル

123、1234、0000、8888、123456、6666、9999 などの単純な入力確認コードをテストできます。

ブラスト用の簡単な認証コード辞書を作成できます

これらの固定検証コードは通常、デバイスやハードウェア デバイスに表示されます。

あるいは立ち上げたばかりのシステムやテスト事業。

SMS 爆撃

脆弱性の原則

一部の本人確認場所では、ログイン、パスワードを忘れた場合、登録、バインド、アクティビティ収集、
フィードバック 5 秒に達する可能性があります 10 件のテキスト メッセージを送信する、またはそれ以上のテキスト メッセージを送信するとビジネスに影響します これが SMS
爆撃
の脆弱性です 携帯電話番号でテキスト メッセージを送信できる回数に制限はありません
2. 垂直爆撃: 携帯電話番号を複数回爆破する

ただし、この抜け穴は、ビジネスへの影響がほとんどないため、支払う金額は低くなります。主に垂直爆撃の抜け穴が受け入れられ、水平方向は監査人に依存します。別の携帯電話番号にテキスト メッセージを必死に送信することも抜け穴とみなされる可能性があります。会社はテキスト メッセージを送信しますが、そのすべてに費用がかかります。監査人に、この脆弱性は非常に深刻であると伝えてください。監査人が深刻ではないと言うなら、100 万通のメッセージを送信してみます。深刻でない場合は、さらに 1 通のメッセージを送信します深刻かどうかを確認するために、監査人を怖がらせることも問題ありません。(もちろん、本物の髪の毛ほどではありませんが、これは違法です)

掘削作業

認証コードが必要な場所を開き、携帯電話番号を入力し、BP を開いて傍受し、「認証コードの送信」をクリックして、傍受した要求パケットをリピーターに送信し、次の手法に従ってバイパスします。

掘削スキル

1. スペースを使用してテキスト メッセージの数の制限を回避します

パラメーター値の前にスペースを追加するか、後ろにスペースを複数追加することで、1 日の送信回数の制限を回避することができます。 mobile= 1222335、前にスペースを追加すると、再送信できます
。成功しました。

画像-20230817202957569

2. Cookie の値を変更して SMS 時間を回避します

一部のテキストメッセージはCookieの値に基づいて送信回数が判定されるため、現在のCookieの値を送信回数の確認に使用すると簡単にすり抜けられてしまいます。

したがって、Cookie の値の変更を複数回試行したり、Cookie を削除してバイパスしたりすることもできます。

画像-20230817203152643

3. インターフェイス マーカーを使用して SMS 制限をバイパスする

SMS 検証の送信では、API がどのような種類の機能を実行しているかを決定するために、異なるパラメーター値が設定される場合があります。たとえば、type=1 は登録、type=2 はパスワードを忘れ
、type=3 はパスワードを変更するなどです。SMS ボミングの目的を達成するためにパラメータ値を変更することで、1 分に 1 回のみ送信という制限を回避できます。

以下の図に示すように、パラメーター値を変更できます。もちろん、smsType、apiType など、一部のパラメーター名は異なります。バックエンド プログラマは、渡されたさまざまなパラメーター名に応じてさまざまなサービスを実装します。

画像-20230817204608481

4. IPを変更してSMSをバイパスする

一部の検証コードは、パッケージ パラメーター X-Forwarded-For など、データ パケットの IP にアクセスすることによって制限されるため、X-Forwarded-For の背後にある IP アドレスを変更できます (0 やその他の値に変更できます
)試してみてください)パスをバイパスします。

もちろん、リクエスト ヘッダーでは、次のような IP に関連する他のパラメーターも変更できます。

X-Remote-IP:localhost:443
X-Remote-IP:127.0.0.1
X-Remote-IP:127.0.0.1:80
X-Remote-IP:127.0.0.1:443
X-Remote-IP:127.0.0.1
X-Custom-IP-Authorization:localhost
X-Custom-IP-Authorization:localhost:80
X-Custom-IP-Authorization:localhost:443
X-Custom-IP-Authorization:127.0.0.1
X-Custom-IP-Authorization:127.0.0.1:80
X-Custom-IP-Authorization:127.0.0.1:443
X-Custom-IP-Authorization:2130706433

画像-20230817205111668

5. 特殊文字のバイパス

バイパスは、次のような特殊文字を追加することで実現できます。

%%% ### @@@ !! \r \n tab键 -- ***  () 等等

画像-20230817205935772

6. +86 または 086 バイパス (市外局番バイパス)

データパケット内の携帯電話番号に +86 または 086 を追加してバイパスします

画像-20230817210037572

7. 市外局番をバイパスに変更する

いくつかの Web サイトを登録すると、地域が表示されることがありますが、地域を変更することで回避できます。

画像-20230817210146291

8. 携帯電話番号の二重書き込み

Web サイトのバックエンドは携帯電話番号のパラメーターを 1 回だけ制限するため、携帯電話番号パラメーターを 2 回書き込むと、もう 1 つの携帯電話番号パラメーターが制限を回避してバックエンドに入り、認識された後、テキスト メッセージが送信されます

複数のパラメータ名を二重に記述することができます

画像-20230817211051368

パラメータ名にスペースまたはカンマを使用して携帯電話番号を二重に記述することもできます。

画像-20230817211110596

投稿リクエストでは、リクエスト本文に携帯電話番号を 2 行書き込んで回避することもできます。

画像-20230817211728890

要約する

上記のSMS検証証明の論理の抜け穴を詳細に説明したことで、読者の皆様は情報収集の重要性を十分に理解していただけると思います。Web サイトが 10 個しかない場合、10 個の Web サイトから検証コード関連の脆弱性を見つけるのは非常に難しいことが想像できますが、Web サイトが 10,000 個あれば、成功率は非常に高くなります。そこで、より多くの資産を収集できるように、いくつかの情報収集方法をまとめました。より多くの資産を収集したい場合は、私の記事「情報収集のアイデア - 脆弱性マイニングの概要」を参照してください

おすすめ

転載: blog.csdn.net/weixin_46367450/article/details/132357037