web-dev-qa-db-ja.com

Apache / Tomcat Webサーバー:nmapは常にすべてのhttpメソッドが許可されていることを返します

ApacheTomcatサーバーの前にApachehttpサーバーを備えたWebサーバーを実行しています。

私の目標:WebサーバーでhttpメソッドDELETEPUTを無効にします。

OWASP( https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006) )によると、これは次のコマンドでテストする必要があります。

nmap -p 80 --script http-methods www.example.com

私のサーバーでは、次の応答があります。

PORT   STATE SERVICE
80/tcp open  http
| http-methods:
|   Supported Methods: GET HEAD POST PUT DELETE OPTIONS
|_  Potentially risky methods: PUT DELETE

http://www.techstacks.com/howto/disable-http-methods-in-Tomcat.html によると、web.xmlのこの行でPUTとDELETEを無効にできます

<security-constraint>
     <web-resource-collection>
          <web-resource-name>restricted methods</web-resource-name>
          <url-pattern>/*</url-pattern>
          <http-method>PUT</http-method>
          <http-method>DELETE</http-method>
     </web-resource-collection>
     <auth-constraint />
</security-constraint>

これを追加しても、応答はSupported Methods: GET HEAD POST PUT DELETE OPTIONSのままです。
web.xmlに<http-method>OPTIONS</http-method>を追加してhttp-methodOPTIONSをさらに無効にすると、次のような見栄えの良い応答が得られます。

80/tcp open  http
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS

実際にTomcatの前にあるApacheWebサーバーでそのhttpメソッドを無効にしようとすると、同じことが起こります。参照: http://www.techstacks.com/howto/disable-http-methods-in-Apache.html

欲しいもの:

  • PUTDELETEを無効にします
  • OPTIONSを無効にしないでください
  • nmap -p 80 --script http-methods www.example.comは、DELETEPUTが無効になっていることを応答する必要があります
1
chloesoe

スクリプトはOPTIONSリクエストを送信し、結果を報告しています。これは、サーバーソフトウェアがサポートするメソッドを報告します。セキュリティ構成は、Tomcatが理解する方法を変更していません。これらのメソッドは、auth-constraint条件を満たすユーザー(この場合はユーザーを含まない)にのみ許可されるというセキュリティ制約が追加されています。したがって、Tomcatは真実です。doesPUTDELETEを理解します。たとえ、誰も使用を許可されていなくても。

さらに確認が必要な場合は、コマンドに--script-args http-methods.retestを追加できます。これにより、検出された各メソッドでリクエストを送信し、レスポンスのステータスコードを報告するようにスクリプトに指示します。ただし、注意してください。これはwillDELETE /のようなリクエストを送信することになり、有害な場合があります。

2
bonsaiviking