web-dev-qa-db-ja.com

HTTP TRACEメソッドのテスト

WebサーバーでHTTP TRACEをテストするにはどうすればよいですか?

HTTP TRACEメソッドが無効になっていることを確認する方法をテスターに​​トレーニングする必要があります。

理想的には、HTTP TRACEコマンドにWebサーバーの応答を返すために、https接続を開始するためにFirebugに貼り付けるスクリプトが必要です。

背景:

私たちのセキュリティペンテスターは、HTTP TRACEの脆弱性を特定し、それが修正されたことを証明する必要があります。

参考文献:

46
Andrew Russell

私が考えることができる最も簡単な方法は cURL を使用することです(これはスクリプト可能です)。

 curl -v -X TRACE http://www.yourserver.com

TraceEnable Offを使用してApacheサーバーに対して実行すると、HTTP/1.1 405 Method Not Allowedが正しく返されます(Apache 2.2.22でテスト済み)

これは、cURLがSSL層に提供される正しい情報を持っている場合、HTTPSサイトでも機能します。これは怠惰な男のグーグルチェックです

curl --insecure -v -X TRACE https://www.google.com/

...接続をネゴシエートし(証明書チェーンは検証しませんが、TRACEステータスを確認する必要があるため、ここでは問題ではありません)、405と応答します。

* Server certificate:
*        subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
*        start date: 2013-02-20 13:34:56 GMT
*        expire date: 2013-06-07 19:43:27 GMT
*        subjectAltName: www.google.com matched
*        issuer: C=US; O=Google Inc; CN=Google Internet Authority
*        SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
> TRACE / HTTP/1.1
> User-Agent: curl/7.25.0 (x86_64-suse-linux-gnu) libcurl/7.25.0 OpenSSL/1.0.1c zlib/1.2.7 libidn/1.25 libssh2/1.4.0
> Host: www.google.com
> Accept: */*

< HTTP/1.1 405 Method Not Allowed
53
LSerni

2つの方法があります。

ステップ1: openssl s_client -connect example.com:443

ステップ2 :

TRACE / HTTP/1.1
Host: example.com

(Enterキーを2回押す)

または

OPTIONS / HTTP/1.1
Host: example.com

(Enterキーを2回押します)(これらをすばやく貼り付ける必要がある場合があるため、タイプアウトではなくコピーして貼り付けます)ステップ3:出力を確認します。間違いがない場合は、エラー400が表示されます。

使用できるもう1つのツールはgnutlsです。

6
Lucas Kauffman

Burp Suite または Zap のようなproxyを使用して、いくつかの簡単な手順に従うことができます。

  1. 選択したプロキシを通過するようにブラウザを設定します。
  2. 通常のHTTPリクエスト(例:GET /index.php HTTP/1.1)それを傍受します。
  3. hTTPメソッドをTRACEに変更し、リクエストをサーバーに送信します。
  4. hTTP応答を確認してください。

応答にリクエスト全体が含まれている場合、TRACEは有効であり、適切に機能しています。

5
Gurzo

他の誰もが言ったことはテストを送る限り正確でしたが、それが脆弱であるかどうかの正しい識別を誰も与えていません。 TRACE/TRACK要求に対するmodの書き換えは言うまでもなく、サーバーによって応答が異なります。 TRACEとTRACKの両方の脆弱性を特定する方法は2つあります。これらは、誤検知または誤検知(私が知っていたもの)を与えることなく機能しているようです。

1)ターゲットが400未満または600以上のステータスコードを返す

2)ターゲットは、渡されたヘッダーを返します。

3
Eric

netcatを使用して実行できます

nc www.myhost.com 80
TRACE /mypage.html HTTP/1.1
Host: www.myhost.com

出力の例は

HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1
Set-Cookie: JSESSIONID=rfyji7QBFFld7HwMGLVM+F8s.undefined; Path=/
Content-Type: text/html;charset=utf-8
Content-Length: 1125
Date: Fri, 06 Mar 2015 06:06:29 GMT
3

ウェブサイトの熟練したユーザーから提供されたすべての素晴らしい答えに感謝します。質問のリファレンスを見て、OWASPについて言及しました。 owaspとesp owasp live cdの使用に慣れていると思います。

CAL9000。このツールには、実際にはhttpリクエストフィールドがあり、httpヘッダー全体のカスタム生成を可能にするフィールド以上のものがあります。 traceを選択してヘッダーオプションを定義し、[移動]をクリックするだけです。応答は以下のテキストに表示されます。

このツールを他のツールよりもお勧めする理由は、このツールは、アプリケーションのセキュリティの概念が他のどの概念よりも逆になっているコミュニティによって提供されるためです。これらのツールは、専門家によってテストおよび検証されています。詳細 owasp ref

ALTERNATE METHOD

http://yehg.net/pentest/CAL9000/#httpRequests

ツールのオンライン版です。

トレース上の注意

Firefoxは現在(xmlHttpRequestを介して)TRACE関数をサポートしていません。 CAL9000は、サーバー側スクリプトからTRACE情報を取得します。また、リソース( http://www.blah.com/index.html )に送信された要求は、必ずしもディレクトリに送信されたものと同じ応答を生成するわけではないことに注意してください(- http://www.blah.com/js/ )、同じサイトにある場合でも

2
Saladin