漏洞描述
Web 服务器在没有任何设置是,使用 OPTIONS 命令,可以返回所有能够响应的 HTTP 方法,如 OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK 。这些方法可能表示在服务器上启用了webdav,可能允许未授权的用户对其进行利用。
<security-constraint>的子元素<http-method>是可选的,如果没有 <http-method>元素,这表示将禁止所有HTTP方法访问相应的资源。
子元素<auth-constraint>需要和 <login-config>相配合使用,但可以被单独使用。如果没有<auth-constraint>子元素,这表明任何身份的用户都可以访问相应的资源。也就是说,如果<security-constraint>中没有 <auth-constraint>子元素的话,配置实际上是不起中用的。如果加入了<auth-constraint>子元素,但是其内容为空,这表示所有身份的用户都被禁止访问相应的资源。
WebDAV(Web-basedDistributed Authoring and Versioning)是基于 HTTP 1.1的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD等几个 HTTP 标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。这个协议的出现极大地增加了 Web作为一种创作媒体对于我们的价值。基于 WebDAV 可以实现一个功能强大的内容管理系统或者配置管理系统。现在主流的WEB服务器一般都支持WebDAV,使用WebDAV的方便性,下面我就较详细的介绍一下,WebDAV在tomcat中的配置。
如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序应用程序呢?
解决方法
第一步:修改应用程序的web.xml文件的协议
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
第二步:在应用程序的web.xml中添加如下的代码即可
<security-constraint>
<web-resource-collection>
<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>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>