19

我们正在我们的应用程序 URL 上运行理性应用程序扫描,它返回以下结果:

似乎 Web 服务器配置为允许以下一种(或多种)HTTP 方法(动词) - 删除 - 搜索 - 复制 - 移动 - PROPFIND - PROPPATCH - MKCOL - LOCK - UNLOCK - PUT

为了解决这个问题,我添加了一个 RewriteRule 来禁止任何这些方法。现在,当我手动测试时,我得到响应代码 403:

curl -X PUT https://someurl.com/somecontext/somepage.xhtml

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /somecontext/somepage.xhtml
on this server.</p>
</body></html>

但理性的应用程序扫描仍然显示这是一个问题。有没有人遇到过同样的问题。此 URL 通过 AJP 转到 tomcat 后端。将不胜感激这个解决方案。

PS:我想到了 Limit 和 LimitExcept 但我不确定它是否会阻止通过 mod_proxy 或 mod_jk 的请求

4

4 回答 4

19

最终奏效的简单解决方案

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)
RewriteRule .* - [R=405,L]

这让应用程序扫描愉快(我也是)

于 2013-04-16T06:46:47.173 回答
7

我怀疑 Apache 正在将 OPTIONS 请求(获取可能支持的方法列表)转发给 Tomcat。然后你会得到默认的 HttpServlet 实现doOptions,它显然会返回一个Allow包含在其中的标头TRACE

您可以覆盖doOptionsTRACE从这个误导性列表中删除,例如匹配 Apache:

response.setHeader("Allow", "OPTIONS, GET, HEAD, POST");

或者,如果您确定永远不需要它的任何其他功能(例如 CORS 预飞行),您可以完全阻止 OPTIONS。顺便说一句,您还可以将Limit与 mod_access 一起使用来限制对所需方法的访问,而不必拖入 mod_rewrite 处理链。

或者:如果您确定您实际上没有TRACE或任何其他不需要的方法可用,您可以忽略该发现。AppScan 试图警告您,看起来可能有一些危险的方法可用,但它实际上并没有发现这样的漏洞。返回OPTIONS方法实际上不起作用是不可取的,但这不是真正的安全问题。

于 2013-04-12T14:26:29.183 回答
6

我们最初在 Apache 的 httpd.conf 中设置了下面的 conf 以禁用易受攻击的 HTTP 方法[TRACE|TRACK|PUT|DELETE|CONNECT|OPTIONS],但它对我们不起作用:

    RewriteEngine on

    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|PUT|DELETE|CONNECT|OPTIONS)

    RewriteRule .* - [F]

现在,我们设置了以下规则及其工作:

 Order allow,deny

 Allow from all

 <LimitExcept POST GET>

       Deny from all

 </LimitExcept>

于 2015-05-27T04:32:05.960 回答
1

我认为 AppScan 以及所有与此相关的扫描仪都使用 OPTIONS 指令来找出启用的方法。您可能需要在重写规则中添加它。

最好的方法是检查您的文档并完全禁用这些方法。

干杯,扎克

于 2013-04-12T14:11:01.403 回答