web-dev-qa-db-ja.com

HTTPメッセージを手動で編集するか、たとえばburpを使用するかで違いはありますか? (WebGoat HTTPインターセプト演習「問題」)

私は今WebGoatに飛び込んでいますが、「一般」タブの「httpプロキシ」で、zap/burpを使用してリクエストをインターセプトおよび変更するように要求するこの小さな演習があります。

enter image description here

何を求められているのかは理解できましたが、手動で変更しても機能しないのはなぜかわかりません。一方、げっぷボタンを使用すると、「変更要求メソッド」の場合と同じように、最後に同じテキストが表示されます。 、何か不足していますか?

これは元のリクエストです

そしてここで私はボタンでそれを変更した後

唯一の違いは、そのGET文字列を手動で記述し、次に?changeMe=Requests+are+tampered+easilyを追加することです。これが機能しない理由がわからず、私を混乱させています。

ああ、もう1つ、Cookieの下にx-request-intercepted:trueと入力すると、機能しない場合があります。 (ブレークラインはありません)

2
Iván

「(手動で」ではなく)「burpを使用してHTTPを編集しています...」と言ったとき、「Change request method "などのBurpの組み込み機能を使用する」という意味だと思います。編集ボックスの要求テキストを変更するだけで、「手動で」ということになります。それが間違っている場合は、明確にしてください。

Burpは多くのことを静かにそして自動的に行います。その中で:

  • 本文を編集した場合のContent-Lengthヘッダーの更新。
  • 組み込み機能を使用してPOSTリクエストをGETに、またはその逆に変換する場合は、Content-LengthおよびContent-Typeを削除します。
  • 圧縮/チャンクで送信されたリクエストとレスポンスを解凍またはステッチする。

ただし、(デフォルトでは)実行しないことがいくつかあります。

  • 編集したリクエストの最後に2つの改行があることを確認します。
  • 改行が期待どおりであることを保証する\r\nフォーム(ほとんどのサーバーは柔軟ですが、実際には仕様に含まれています)。OSに関係なく、ボックス内でEnter/Returnキーを押すためにそのフォームを使用すると思います。
  • 特定の動詞にとって意味のないヘッダーを削除または変更する。
  • Content-Typeを手動で変更する場合、またはその逆(ヘッダーの変更)の場合に本文を再フォーマットします。
  • ヘッダー(または最初の行)が適切にフォーマットされ(または整形式であっても)、適切な値(x-request-interceptedヘッダーにはスペースがありませんが、-thinkはありませんが、それが問題であるか、サーバーが通常そこにあるため、サーバーがそれを予期している可能性があることを意味します。

手動で作成したリクエストと機械で生成されたリクエストを比較したい場合は、[Raw]タブを試すことができますが、実際には[Hex]タブの方が参考になります。改行スタイルやその他の非印刷、空白、または類似した文字のようなものを隠しません。また、Repeaterタブを使用して、Burpのリクエストに対して多数の小さな繰り返しを簡単に試すこともできます(アクションをクリックするか、リクエストテキスト領域を右クリックして[Send to Repeater]を選択することで最も簡単に行えます)。リピーターはタブ付きで、履歴を記憶し、同じリクエストの複数のバリアントを異なるタブに表示できます。

結局のところ、HTTPはすべて単なるバイトであり、それがBurpが送信するものです。バイトが人間のユーザーによって手動で入力されたのか、Burpの要求/応答変更機能によって追加/変更されたのかは関係ありません。 netcat(ncncat、またはnetcat、インストールした内容に応じて)を使用して同じバイトを送信することもできます。 TCP(そして、HTTPSの場合はTLS。TLSハンドシェイクと暗号化を手動で実行したくない)。

3
CBHacking