我在Apache Tomcat服务器前面运行一个Apache服务器的Web服务器。
我的目标是:在Web服务器上禁用http-methods DELETE和PUT 。
根据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
我想要的是:
PUT和DELETE OPTIONS nmap -p 80 --script http-methods www.example.com应该响应, DELETE和PUT被禁用 该脚本正在发送一个OPTIONS请求并报告结果。 这报告了服务器软件支持的方法。 您的安全configuration不会更改Tomcat理解的方法; 它增加了一个安全约束,这些方法只允许满足auth-constraint条件的用户使用,在这种情况下不包含用户。 所以Tomcat是真实的:即使没有人允许使用它,它也理解PUT和DELETE 。
如果你想进一步确认,你可以添加--script-args http-methods.retest到你的命令。 这将指示脚本发送每个发现的方法的请求,并报告响应的状态码。 但要小心:这将导致发送像DELETE /这样的请求,这可能是有害的。