WEB攻撃と防御 - 購入決済ロジックの脆弱性&データ改ざん&リクエストリプレイ&インターフェイス差し替え

目次

1. 事前知識ポイント

2. 脆弱性に関する重要な知識ポイントの表示例と説明

<改ざん価格>

<改ざん回数 1>

<タンパーオーダー情報>

<タンパーオーダー情報>

<改ざん回数2>

<改ざんクーポン>

3. マイニングの方法と防止方法


1. 事前知識ポイント

1. 商品の購入 - 数量 価格 シリアル番号など
2. 支払いモード - ステータス & インターフェイス & 負数など
3. 割引処理 - クーポン & ポイント & リプレイなど


1. 一般的な支払いプロセスに精通している:
        商品と数量を選択 - 支払いと配送方法を選択 - 注文番号を生成 - 注文の支払いを選択 - 支払いを完了します。
2. データの改ざんに精通している:
        商品ID 、購入金額、購入数量、支払方法、注文番号、支払状況など
3. これらの変更方法に精通している:
        立替払い、重複払い、ミニマム払い、マイナス払い、オーバーフロー払い、クーポン払いなど

2. 脆弱性に関する重要な知識ポイントの表示例と説明

1. 製品 Web サイトを開きます。

2. 商品をランダムに開くと、数量が 1 の場合、価格が 6000 であることがわかります。

3. 購入後、クリックしてデータ パッケージを取得します。

4. データパッケージから数量と価格を確認できます。

5.荷物を直接入れると、支払いページにジャンプします。

<改ざん価格>

6. 価格を 1 に変更し、パッケージを配置します。

7. Web サイトの支払いページで、支払う金額も 1 になっていることがわかります。

8. この現象の理由は、ウェブサイトの価格が固定されているのではなく、データ パッケージによって決定されるためです。

<改ざん回数 1>

9. 数量を -1 に変更し、パッケージを入れます。

10. 金額が -6000 に変更されたことがわかります。

<タンパーオーダー情報>

11. 最初の製品を選択し、クリックして購入し、データ パッケージを取得します。

12. 2 番目の製品を選択し、[購入] をクリックしてデータ パッケージを取得します。

13. パケット情報をメモ帳に貼り付けます。

14.ある商品の価格を使用して別の商品を購入するには、特定の値を変更するだけです。

15. 次の 2 つの部分をコピーして、データ パッケージ内の対応する位置に貼り付けます。

16. データパッケージを変更後、パッケージを入れます。

17. 支払いページで、購入するアイテムが正常に変更されたことを確認できます。

<タンパーオーダー情報>

18. 支払い方法をクリックすると、多くのオプションが表示されます。

19. ここでは、最初に Alipay 支払いを選択し、[注文を送信] をクリックして、データ パッケージを取得します。 

20. このデータ パケットをリリースした後、ウェブサイトは Alipay に関連する支払いリンクをプルして、次のデータ パケットを形成します。 

21. 支払いインターフェース情報を自分の名前に変更すると、支払い時に資金が自分の名前に支払われ、ウェブサイトも支払いが成功したことを認識します。この操作は、前回の記事で説明したリダイレクトに似ています。
22. この時点で、この製品を購入するのは危険すぎると思うかもしれません。
23. 実際にはそうではありません. 一方では, ウェブサイトはあなた自身の支払いインターフェースを認識しないかもしれません. 一方, あなたがインターフェースを変更した場合, ウェブサイトはあなたのコールバック情報を受け取りますか? この時点では、支払いは成功していますが、ウェブサイトは支払いを検出していません。これは無駄な作業に相当します。

<改ざん回数2>

23. 次のショッピング サイトに移動します。

24. これは 1,000 元の商品です。

25. [今すぐ購入] をクリックしてパケットを受け取ります。

26. データ パッケージを観察すると、購入数量がデータ パッケージの最後の行にあることがわかりますが、購入金額はデータ パッケージに表示されないため、価格の改ざんを直接防ぐことができます。

27. データ パッケージには価格情報はなく、数量情報のみなので、数量を変更してみましょう。

28. 「0.0001」に変更し、パッケージをリリースします。 29. 最終的な合計金額が以下のスタイルになることがわかります。

<改ざんクーポン>

30. 商品ページにアクセスすると、この商品のクーポンがあることがわかります。

31.商品を購入した後、クーポンを使用して購入できることがわかります。

32. 1 つを選択すると、金額は 900 元になります。

33. 支払い方法を選択したら、[今すぐ支払う] をクリックします。

34. 決済完了後、再度商品を購入すると、クーポンが最初の3枚から2枚に変わっていることがわかります。

35. もう一度購入をシミュレートし、3 つすべてを使い果たします。

36. クーポンを使用した後に再度購入すると、クーポンを使用するオプションがありません。

37. 今度はもう一つ手に入れましょう。

38. 後で再度購入したところ、別のクーポンがありました。

39. 購入するクーポンを選択し、[今すぐ購入] をクリックしてデータ パッケージを取得します。

40. パラメータを貼り付けましょう。

41. 別のクーポンを取得してから、クーポンを使用せずに購入し、[今すぐ購入] をクリックしてデータ パッケージを取得します。

42. パラメータ値をもう一度貼り付けて、貼り付けたものと比較してみましょう。

43. クーポンなしのデータ パッケージとクーポン付きのデータ パッケージの内容の違いは、次のように明確にわかります。

44. 要約すると、これは値であり、クーポンを使用した場合の値は 106、クーポンを使用しなかった場合の値は 0 です。

45. クーポンに関する質問:

  • 繰り返し収集 - クーポンは 1 人のユーザーのみが請求でき、1 回の購入で使用できます。
  • 再利用 - パケットの再生

 46. クーポンに番号が付けられていると仮定します.クーポンを使用して再度購入すると、データパケットの下のコードが107に変更されていることがわかります.

47. クーポンの価値が常に上昇していることは明らかです。

48. クーポンを受け取らないようにしましょう。上記の値を変更して試してみてください。

49. この時点で、購入したデータ パッケージを再度取得し、その値をより大きな数値に変更します。ここでは「200」に変更します。

50. バッグを置いた後、価格が 900 に変更されていることがわかります。

51. この抜け穴を使用する前提は、そのクーポンの法則を見つけることなので、次のような質問を考える人もいるでしょう: 通常、クーポンは 1 回しか請求できないので、上記のように複数回収集して見つけるにはどうすればよいでしょうか?法律?毛織物?

52. この種の問題は簡単に解決できます。別のアカウントとパスワードを登録して取得します。

53. ここで別の質問があります。クーポンのコードを再利用できますか?

54. ここでは、購入時に別のデータ パケットを取得し、クーポン番号の位置を先ほど試した 107 に変更します。

55.パッケージを入れた後、金額はまだ900で、クーポン番号はまだ使用できることがわかります。 

56. この時点で、商品を購入するためのこのクーポンは危険すぎると思うかもしれません。

57. 実際、WeChat はそれほど多くなく、単純なフィルターでこの抜け穴を排除できます。
58. 誰かがクーポンを受け取ると、他の人がそのクーポンを使用できないようにバインドするように設定できます。クーポンが存在しないことを通知する; クーポン情報をデータパケットの目に見えない情報に書き込んで暗号化することもできます。
59. 次に、注文番号を変更します。
60. 1000 元の注文の注文番号を含むデータ パケットを取得します。

61.貼り付けます。

62. 支払いページの ID を取得し、それもコピーします。 

63. 別の 100000 オーダーを作成し、同じ方法でその情報をコピーしましょう。

65. 次に注文センターにチェックに行きます。

66. 注文カバレッジを使用しようとし、1000 注文を使用して 100000 注文をカバーします。

67. 1000 オーダーをクリックして支払います。

 68. 次のパケットをキャプチャします。

69. 2 つのデータ パケットを手放した後、順序番号の付いたデータ パケットが表示されます。

70. コピーしたばかりの 100,000 注文の注文情報に変更します。

71. パッケージを配置した後、それに応じて注文金額が 100,000 に変更されたことがわかります。

72. 同様に、注文番号情報を 100000 から 1000 に逆に変更すると、金額はそれに応じて変更されますか?

73. 答えはイエスです。

74. 次に、次の 3 つの可能性が考えられます。

75. このセキュリティ問題の解決策は実際には非常に単純です. データ パケットには id 値があることがわかります. この値を通じて, 注文商品と注文金額を制御できます.注文番号は後で 意味がありません.2つを同時に変更することは可能です.2つが一致しない場合、論理エラーが発生し、エラーページがポップアップします.

 

76. 検証のために別のケースを使用しましょう。

77. 購入後のキャプチャ パケットを見つけます。

 78. 上記の変更後にデータ パッケージをパッケージに入れると、以下のとんでもない順序が表示されます。

79. このウェブサイトには明らかに問題があります。 

80. しかし幸いなことに、まだ監査があります。

3. マイニングの方法と防止方法

1. この種の脆弱性を悪用する場合は、まず対象の Web サイトに購入機能があるかどうかを判断する必要があります。
2. 防止方法:
  • 金額はデータベース定義の対象となります
  • 購入数量は正の整数に制限されています
  • クーポンは永久使用後に削除されます
  • 注文が生成された後、対応する値を確認します

おすすめ

転載: blog.csdn.net/weixin_62808713/article/details/130120876