众所周知,GET 和 POST 是最常见的方法,大多数主流网站都只支持这两种方法,因为它们可以满足功能需求。其中,GET 方法主要用于获取服务器上的资源,而 POST 方法用于向服务器上具有特定 URL 的资源提交数据。其他方法出于安全考虑被禁用,因此在实际应用中,超过 90% 的服务器不会响应其他方法并抛出 404 或 405 错误提示。以下是 HTTP 方法的一些不安全性:
1.该方法将公开服务器信息,例如中间件版本,支持的HTTP方法等。
2.PUT方法。由于PUT方法本身没有验证机制,利用PUT方法可以快速方便地入侵服务器,上传或其他恶意文件,从而获取敏感数据或服务器权限。
3、手段:该手段可用于删除服务器上特定的资源文件,造成恶意攻击。
3. 漏洞验证
1.环境搭建
1.测试环境:WIN10 64位,7.0.72,curl 7.49
2. 在 7 个默认配置中,org.
该参数默认值为true,即不允许PUT操作,所以如果通过PUT或者方法访问会报403错误,为了配合测试,可以将该参数设置为false。
2. 漏洞利用
1.PUT上传删除文件成功
当参数为 时,使用Curl测试,发现可以通过PUT进行文件上传和删除。
2. .jsp 直接 PUT 上传失败
这时候就想直接上传.jsp,但是发现上传失败。
研究表明,原因是**默认配置下,后缀为 jsp、jspx 的请求由 org.... 处理**,其他请求均由 org.... 处理。
刚才的设置是false,对jsp、jspx不生效,所以在PUT上传jsp、jspx文件的时候,是用来处理请求的,但是里面并没有PUT上传的逻辑,所以会报403错误。
3.利用漏洞成功上传
对于不能直接上传的问题,一般的思路是通过解析漏洞来解决,而IIS 6、7等很多中间件版本都存在相关漏洞。
在本测试环境中,我们利用7的任意文件上传漏洞(CVE-2017-12615)来实现目的。此漏洞**通过构造特殊后缀名,绕过检测,使其利用逻辑处理请求,从而上传jsp文件**。具体来说,主要有三种方法,shell.jsp%20、shell.jsp::$DATA、shell.jsp/
本次测试采用的是第一种方法,在1.jsp后面加上%20,这样就能成功实现上传并获取。
>curl -X PUT:8080//1.jsp%2 0 -d “”
然后直接安装木马了,从下图可以看到.jsp上传成功,并且成功控制了服务器。
4. 如何自我纠正和自我检查
通过上面的测试我们可以发现,虽然只有参数为false才可以实现渗透,但是还是建议禁止除GET、POST之外的HTTP方法,原因有二:
1、除GET、POST之外的其他HTTP方法,其严格的应用场景较少,且禁止它们的方法简单,即实现成本较低;
2、低权限用户一旦掌握这些方法,便可以利用它们对服务器发起有效的攻击,威胁影响较大。
写到这里,可能大家明白了,为什么要禁止除GET、POST之外的HTTP方法了,一个原因是GET、POST已经可以满足功能需求了,另外一个原因是如果不禁止的话,威胁影响会很大。
为了自我纠正,可以使用 来遍历服务器使用的 HTTP 方法。但需要注意的是,不同目录中激活的方法可能不同。而且很多时候,虽然有些方法被报告为有效,但实际上它们不可用。很多时候,即使请求返回的响应中没有列出某个方法,该方法仍然可用。一般情况下,建议手动测试每个方法以确认是否可用。
具体方法例如使用curl测试:
1.测试它是否响应以及是否允许:GET、HEAD、POST、PUT、,
卷曲-v -X
2.测试是否可以通过PUT上传文件
curl-X PUT-d“测试”
3.找到一个已经存在的文件,比如test.txt,测试是否可以删除
curl -X
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。