漏洞报告模版 - 服务器启用了不安全的Http方法

admin 2022年4月20日00:00:50评论21 views字数 2639阅读8分47秒阅读模式

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方法也包含其中。

漏洞报告模版 - 服务器启用了不安全的Http方法
image-20211223183236154

Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE

尝试利用PUT上传一个文本6.txt

漏洞报告模版 - 服务器启用了不安全的Http方法
image-20211223183556049

成功完成PUT上传操作

漏洞报告模版 - 服务器启用了不安全的Http方法
image-20211223183625240

使用curl测试:

curl -v -X OPTIONS http://www.example.com/test/

查看响应

<Allow: OPTIONSGETHEADPOSTPUTDELETE
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方法
image-20211223183911823

如果删除成功,则攻击有效。

复测情况

已修复

测试人员

南风向晚

漏洞报告模版 - 服务器启用了不安全的Http方法


原文始发于微信公众号(利刃藏锋):服务器启用了不安全的Http方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月20日00:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞报告模版 - 服务器启用了不安全的Http方法http://cn-sec.com/archives/928501.html

发表评论

匿名网友 填写信息