web-dev-qa-db-ja.com

WebサーバーがサポートするHTTPメソッドを識別する方法は?

OPTIONS、TRACEなど、WebサーバーでサポートされているさまざまなHTTPメソッドを識別するにはどうすればよいですか?

Linuxで nc コマンドを試しました。しかし、それは機能しません。サポートされているHTTPメソッドは表示されません。要求されたHTMLページとともに、他のいくつかのHTTPヘッダーが返されます。別の解決策はありますか?

8
Anandu M Das

RFC2616 ごとに、OPTIONSメソッドshouldはサポートされているメソッドを返します。これは常にそうであるとは限らないので、キーワードはshouldです。以前の投稿ですでに指摘されているように、確実にするために、各メソッドを個別にテストする必要があります。

8
anon

メソッドはほとんどないため(OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、およびCONNECT)、スクリプトとncを使用して、許可されているすべてのメソッドにリクエストを送信し、結果を解析できます。

for method in OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT ; do 
    echo -e "\n\nTrying $method\n\n" 
    echo -e "$method / HTTP/1.1\nHost: server-hostname\nConnection: close\n\n" | nc server-hostname 80 | head 
    sleep 2
done

HTTPエラー400、403、405、406は、実装されていないメソッドを使用しようとしたときに返されるタイプです。

7
ThoriumBR

Webサーバーがサポートするメソッドを識別する唯一の方法は、それぞれを試し、応答を評価して、メソッドがサポートされているかどうかを判断することです。サポートするメソッドを問い合わせるためだけにクエリを実行することはできません。リストは表示されません。

とはいえ、ncよりも優れたツールがあります。 Nmapとmetasploit はどちらもHTTPメソッドスキャンをサポートし、基本的に作業を自動化します。

5
gowenfawr

HTTPサーバーが Allow応答ヘッダー で特定のリソースに対してサポートされているメソッドのリストを返す場合があります RFC 7231newRFC for HTTP 1.1セマンティクス):

  • 最初の OPTIONS要求 への応答で、特定のリソースパスまたは特別な*パス(主にサーバーの機能を記述します)のいずれか。
  • 第2に、既知の方法で、特定のリソースのサーバーでサポートされていない方法を試した場合、サーバーは 405 Method Not Allowed ステータスコードで応答できます。その場合、 Allow応答ヘッダー ;で許可されたメソッドのリストを提供する必要があります
  • 他のHTTPリクエストの場合、Originサーバーは Allow応答ヘッダー ;でサポートされているメソッドのリストを返すことができます。

しかし、サーバーが連携しない場合はどうなりますか?例えば。 OPTIONS *リクエスト、さまざまなGETリクエストを試しましたが、サーバーがAllowヘッダーで許可されたメソッドのリストを返すことはありませんか?または、サーバーが応答したが、サーバーが嘘をついていると思われる場合はどうなりますか?

それからあなたは知らない、そしてあなたはそれと一緒に暮らさなければならないでしょう。何をするかは、目標によって異なります。

  • 単にターゲットシステムを使用する場合は、GETのみがサポートされていると想定して慎重に行う必要があります。および使用方法に関する詳細なドキュメントを入手してください。システム;
  • 侵入テストを行っている場合は、既知の動詞をすべてテストしたり、あまり知られていない動詞( PATCH など)をテストしたり、独自の動詞を作成したりできます。より一般的には、テストの一部がシステムにゴミを投げて、それがどのように反応するかを確認します。

ただし、サポートされている動詞のリストを知りたい理由について考えてください。追加のデータがないと、どの動詞が使用されているかを知ることはほとんど役に立ちません(たとえば、https://accounts.google.com/AddSessionPOST動詞を受け入れます-どのようなデータがどの形式であるかなどわからない場合、動詞を知っているだけで何ができるのでしょうか?)

2
Jean Hominal