3.服务器启用了不安全的Http方法
漏洞名称
服务器启用了不安全的Http方法
漏洞地址
https://mirrors.tuna.tsinghua.edu.cn/
漏洞等级
低危
漏洞描述
检测到目标 Web 服务器配置成允许下列其中一个(或多个)HTTP 方法:TRACE,PUT,DELETE,COPY,MOVE,SEARCH,PROPFIND,PROPPATCH,MKCOL,LOCK,UNLOCK。
漏洞成因
Web 服务器或应用程序服务器是以不安全的方式配置的。
根据HTTP标准,HTTP请求可以使用多种方法,其如下所示:
HTTP1.0定义了三种请求方法:GET、POST和HEAD;HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE和CONNECT。
WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制:
OPTIONS、HEAD、TRACE:主要由应用程序来发现和跟踪服务器支持和网络行为;
GET:检索文档;
PUT和POST:将文档提交到服务器;
DELETE:销毁资源或集合;
MKCOL:创建集合
PROPFIND和PROPPATCH:针对资源和集合检索和设置属性;
COPY和MOVE:管理命名空间上下文中的集合和资源;
LOCK和UNLOCK:改写保护
上述不安全的HTTP方法可以对Web服务器进行上传、修改、删除等操作,对服务造成威胁。
众所周知,GET、POST是最为常见方法,而且大部分主流网站只支持这两种方法,因为它们已能满足功能需求。其中,GET方法主要用来获取服务器上的资源,而POST方法是用来向服务器特定URL的资源提交数据。而其它方法出于安全考虑被禁用,所以在实际应用中,九成以上的服务器都不会响应其它方法,并抛出404或405错误提示。以下列举几个HTTP方法的不安全性:
1.OPTIONS方法,将会造成服务器信息暴露,如中间件版本、支持的HTTP方法等。2.PUT方法,由于PUT方法自身不带验证机制,利用PUT方法即可快捷简单地入侵服务器,上传Webshell或其他恶意文件,从而获取敏感数据或服务器权限。3.DELETE方法,利用DELETE方法可以删除服务器上特定的资源文件,造成恶意攻击。
漏洞危害
可能会在Web 服务器上上载、修改或删除Web 页面、脚本和文件。
修复方案
如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP 方法。
最简单的方式就是修改WEB应用的web.xml部署文件。在里面插入下面几行代码就搞定了,把需要屏蔽的方法加在里面。如果应用包比较多也没必要一个个改,直接修改Tomcat的web.xml就可以了,这样在Tomcat中运行的实例都会有效。
<!-- 禁用不安全的HTTP方法,即 PUT、DELETE 等 -->
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>All Role</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-constraint>
用于限制对资源的访问;
<auth-constraint>
用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;
<url-pattern>
指定需要验证的资源
<http-method>
指定那些方法需要验证
重启服务再验证就不会存在这个问题了。
测试过程
使用OPTIONS方法列出服务器使用的HTTP方法。注意,不同目录中激活的方法可能各不相同。
许多时候,被告知一些方法有效,但实际上它们并不能使用。有时,即使OPTIONS请求返回的响应中没有列出某个方法,但该方法仍然可用。
手动测试每一个方法,确认其是否可用。
http://10.211.55.2:8080/
通过GET请求访问一个网页,抓包然后将GET请求替换为OPTIONS方法,这时服务器通常会返回对于接口资源的支持,而开启哪些HTTP方法也包含其中。
Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE
尝试利用PUT上传一个文本6.txt
成功完成PUT上传操作
使用curl测试:
curl -v -X OPTIONS http://www.example.com/test/
查看响应
<Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE
curl -v -T test.html http://www.example.com/test/test.html
看是否能上载来判断攻击是否生效。
找一个存在的页面,如test.html
curl -X DELETE http://www.example.com/test/test.html
如果删除成功,则攻击有效。
复测情况
已修复
测试人员
南风向晚
原文始发于微信公众号(利刃藏锋):服务器启用了不安全的Http方法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论