Apache/Tomcat Web 服务器:nmap 始终返回允许所有 http 方法

Apache/Tomcat Web 服务器:nmap 始终返回允许所有 http 方法

我在 Apache Tomcat 服务器前面运行一个带有 Apache http 服务器的 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 方法,那么我会得到这个好看的响应:OPTIONS<http-method>OPTIONS</http-method>

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

如果我尝试在实际上位于 tomcat 前面的 Apache Web 服务器中禁用该 http 方法,也会发生同样的事情。请参阅:http://www.techstacks.com/howto/disable-http-methods-in-apache.html

我想要的是:

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

答案1

脚本正在发送OPTIONS请求并报告结果。这将报告服务器软件支持。您的安全配置不会改变 Tomcat 理解的方法;它只是添加了一个安全约束,即仅允许满足条件的用户使用那些方法auth-constraint,在本例中条件不包含任何用户。因此 Tomcat 是诚实的:它理解PUTDELETE即使没有人被允许使用它们。

如果您需要进一步确认,可以添加--script-args http-methods.retest到命令中。这将指示脚本使用每个发现的方法发送请求并报告响应的状态代码。但要小心:这将要导致发送类似的请求DELETE /,这可能会造成危害。

相关内容