Apache / Tomcat Web服务器:nmap总是返回所有的http方法都是允许的

我在Apache Tomcat服务器前面运行一个Apache服务器的Web服务器。

我的目标是:在Web服务器上禁用http-methods DELETEPUT

根据OWASP( https://www.owasp.org/index.php/Test_HTTP_Methods_ (OTG-CONFIG-006 ) ),这个命令应该被testing:

 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我可以禁用PUT和DELETE这个在web.xml中的行

 <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-method OPTIONS ,那么我得到这个好看的响应:

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

如果我尝试禁用Apache Web服务器中实际位于tomcat前面的http方法,情况也是如此。 请参阅: http : //www.techstacks.com/howto/disable-http-methods-in-apache.html

我想要的是:

  • 禁用PUTDELETE
  • 不要禁用OPTIONS
  • nmap -p 80 --script http-methods www.example.com应该响应, DELETEPUT被禁用

该脚本正在发送一个OPTIONS请求并报告结果。 这报告了服务器软件支持的方法。 您的安全configuration不会更改Tomcat理解的方法; 它增加了一个安全约束,这些方法只允许满足auth-constraint条件的用户使用,在这种情况下不包含用户。 所以Tomcat是真实的:即使没有人允许使用它,它理解PUTDELETE

如果你想进一步确认,你可以添加--script-args http-methods.retest到你的命令。 这将指示脚本发送每个发现的方法的请求,并报告响应的状态码。 但要小心:这导致发送像DELETE /这样的请求,这可能是有害的。