ソース:https://shahjerry33.medium.com/business-logic-errors-a-logic-destruction-477c4ebc824b
訳:
ビジネス ロジック エラーにより、アプリケーションのビジネス ロジックを操作できるようになるでゲス。
場合によっては、ビジネス ロジック エラーがアプリケーションに壊滅的な影響を与える可能性があり。
ビジネス ロジック エラーは、アプリケーションの機能の正当な使用に関係するため、見つけるのが困難。
この種の脆弱性は、アプリケーションの正当な処理フローを、組織に悪影響をもたらす方法で使用する方法で。
この脆弱性は、私のプライベート プロジェクトの招待機能で発見され。
非プレミアム ユーザー向けの招待の数は限られており (4 招待)、つまり 4 人しか招待できず。
1 つの招待を送信した後、3 つの招待が残ったのですが、招待を送信した後、招待をキャンセル (取り消し) するオプションがあることに気付き、そのキャンセル オプションを使用したところ、また4 つの招待を送信することになり。
招待状の送信中に、burpsuite を使用してリクエストをキャプチャし、 電子メールの パラメータ値を配列に操作して応答を確認したところ、両方の電子メールが応答に反映されていることがわかり。
2人の 両方のメールを確認したところ、両方のメールに招待状が届いていることがわかりましたが、Web アプリケーションで確認すると1 件の招待としてカウントされており。
ユーザーに招待状を送信した後でもまだ 3 件の招待状が残っていることになり。
他のプログラミング言語と同様、JSON の配列は角括弧 [] で囲まれた項目のリストで。 配列内の各項目はカンマで区切られ、配列のインデックスは 0 から始まります。JSON 配列は、文字列、数値、ブール値、オブジェクト、またはその他の配列などの複数の値タイプを JSON 配列内に格納でき。
たとえば、 {“email”:[“email1@gmail.com”,“email2@gmail.com”]} は配列全体とみなされ、変更は両方に同時に適用されます。
どうやってこの脆弱性を見つけたのか?
1. チームメンバーの招待機能を使用し。
チームメンバーの招待機能
招待状の送信
2. 招待を送信した後、この招待機能がどのように動作するかを確認するために、burpを使用してリクエストをキャプチャし。正常に動作していて。
キャプチャされたリクエスト
通常の動作
3. 次のステップでは、以前に送信した招待状 (laneko6393@astarmax.com) を取り下げたので、再び 4 つの招待状が手元にあり。
招待を取り下げました (laneko6393@astarmax.com)
4. 次に、再度招待状 (laneko6393@astarmax.com) を送信し、リクエストをキャプチャして、新しい電子メール (winaxi9052@bombaya.com) を追加する配列で操作し。
両方の電子メールで招待状を受け取り。
操作されたリクエスト - 配列
操作された応答 - 配列
招待状を受け取りました
招待状を受け取りました
5. 次のステップで、再度招待を取り消し、今度は配列を使用して一度に 3 人のユーザーに招待を送信し、成功し。
操作されたリクエスト - 配列 (招待状 3 件)
操作された応答 - 配列 (3 つの招待状)
招待状を受け取りました
招待状を受け取りました
招待状を受け取りました
6. 最後のステップとして、ページをリロードし、4 件の招待状から何件の招待状が差し引かれているかを確認し。
配列により、送信した 3 件の招待状はすべて 1 件としてカウントされたため、まだあと 3 件の招待状が残っていることがわかり。
なぜこれが起こったのでしょうか?
パラメータへのデータ型 (配列) の不適切な割り当てが原因で発生しこの問題は、email 、ユーザーの招待機能の悪用につながり。
影響 :
攻撃者はこの機能を悪用し、プレミアム機能を使用せずに必要なだけ招待状を送信することができ。これは会社のビジネス上の損失につながる可能性があり。
緩和 :
この種の脆弱性を回避するには、適切なデータ型をパラメータに割り当て、入力検証を行う必要があり~。
ほなほな。