近期通过APPScan扫描程序,发现了不少安全问题,通过大量查阅和尝试最终还是解决掉了,于是整理了一下方便查阅。
1.启用了不安全的HTTP方法
问题是这样描述的:
检查原始测试响应的“Allow”头,并验证是否包含下列一个或多个不需要的选项:DELTE,SEARCE,COPY,MOVE,PROPFIND,PROPPATCH,MKCOL,LOCK,UNLOCK,PUT。
响应头信息如下:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
Content-Length: 0
Date: Mon, 25 Jul 2016 10:12:23 GMT
我们首先了解一下这几个方法的由来:HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法;HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 WebDAV完全采用了HTTP1.1的方法,扩展了一些方法,并扩展了一些其他方法:
- Options、Head、Trace:主要由应用程序来发现和跟踪服务器支持和网络行为;
- Get:检索文档;
- Put和Post:将文档提交到服务器;
- Delete:销毁资源或集合;
- Mkcol:创建集合
- PropFind和PropPatch:针对资源和集合检索和设置属性;
- Copy和Move:管理命名空间上下文中的集合和资源;
- Lock和Unlock:改写保护
很显然上述操作明细可以对web服务器进行上传、修改、删除等操作,对服务造成威胁。虽然WebDAV有权限控制但是网上一搜还是一大堆的攻击方法,所以如果不需要这些方法还是建议直接屏蔽就好了。
下面就来详细说一下解决方案: 最简单的方式就是修改WEB应用的web.xml部署文件。在里面插入下面几行代码就搞定了,把需要屏蔽的方法加在里面。如果应用包比较多也没必要一个个改,直接修改Tomcat的web.xml就可以了,这样在Tomcat中运行的实例都会有效。
<security-constraint>
<web-resource-collection>
<web-resource-name>fortune</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
</security-constraint>
<security-constraint>
用于限制对资源的访问;<auth-constraint>
用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;<url-pattern>
指定需要验证的资源<http-method>
指定那些方法需要验证
重启服务再验证就不会存在这个问题了。