最近 总是 听朋友说,被上级单位通报HTTP不屈安方法漏洞,本来是低危漏洞,也没怎么把稳它,最近升为中危漏洞,每天催着去整改,闹得民气惶惶,乃至常常被掩护职员吐槽,做的是得不偿失落的事情。

因此,有必要解释一下,为什么要禁止除GET和POST之外的HTTP方法。

换句话说,对付 这些HTTP不屈安方法,到底有多不屈安呢?

禁用jsp为什么要制止除GET和POST之外的HTTP办法 PHP

一、HTTP要求方法有哪些

根据HTTP标准,HTTP要求可以利用多种方法,其功能描述如下所示。

HTTP1.0定义了三种要求方法: GET、POST、HEAD

HTTP1.1新增了五种要求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT

图片来源于网络

二、举例解释不屈安的HTTP方法

众所周知,GET、POST是最为常见方法,而且 大部分主流网站只支持这两种方法,由于它们已能知足功能需求。
个中,GE T方法紧张用来获取做事器上的资源,而POST方法是用来向做事器特定URL的资源提交数据。
而其它方法出于安全考虑被禁用 ,以是 在实际运用中,九成以上的做事器都不会相应其它方法,并抛出404或405缺点提示。
以下列举几个HTTP方法的不屈安性:

1、OPTIONS方法,将会造成做事器信息暴露,如中间件版本、支持的HTTP方法等。

2、PUT方法,由于PUT方法自身不带验证机制,利用PUT方法即可快捷大略地入侵做事器,上传Webshell或其他恶意文件,从而获取敏感数据或做事器权限。

3、DELETE方法,利用DELETE方法可以删除做事器上特定的资源文件,造成恶意攻击。

三、漏洞验证

(一)环境搭建

1、测试环境为:WIN10 64位、Tomcat 7.0.72、curl 7.49

2、在Tomcat 7默认配置中,web.xml文件的org.apache.catalina.servlets.DefaultServlet的

readonly参数默认是true,即不许可DELETE和PUT操作,以是通过PUT或DELETE方法访问,就会报403缺点。
为合营测试,把readonly参数设为false。

(二)漏洞利用

1、PUT上传和DELETE删除文件成功

在DefaultServlet的readonly参数为falsed的情形下,利用Curl进行测试,创造已能通过PUT上传和DELETE删除文件。

2、直接PUT上传.jsp失落败

此时想直接上传webshell.jsp,但创造上传失落败。

研究创造,缘故原由是在默认配置下,涉及jsp、jspx后缀名的要求由org.apache.jasper.servlet.JspServlet处理,除此之外的要求才由org.apache.catalina.servlets.DefaultServlet处理。

刚才将DefaultServlet的readonly设置为false,并不能对jsp和jspx生效。
因此,当PUT上传jsp和jspx文件时,Tomcat用JspServlet来处理要求,而JspServlet中没有PUT上传的逻辑,以是会403报错。

3、利用漏洞成功上传WebShell

对付不能直接上传WebShell的问题,一样平常的思路是通过解析漏洞来办理,而不少中间件版本如IIS 6、TOMCAT 7等都涌现过干系的漏洞。

在此测试环境中,利用Tomcat 7的任意文件上传漏洞(CVE-2017-12615)来实现目的,该漏洞通过布局分外后缀名,绕过tomcat检测,让它用DefaultServlet的逻辑处理要求,从而上传jsp文件。
详细来说,紧张有三种方法,比如shell.jsp%20 、shell.jsp::$DATA 、shell.jsp/

本次测试,利用第一种方法,在1.jsp后面加上%20,如此即可成功实现上传,并取得WebShell。

>curl -X PUT http://127.0.0.1:8080/examples/1.jsp%2 0 -d “HelloJSP”

然后就直接挂马了,从下图可以看到成功上传webshell.jsp,并成功实现对做事器的掌握。

四、如何自纠自查

从上面的Tomcat测试可以创造,虽然需在DefaultServlet的readonly参数为false条件下,才能实现渗透,但还是建议把除了GET、POST的HTTP方法禁止,有两方面缘故原由:

1、除GET、POST之外的其它HTTP方法,其刚性运用处景较少,且禁止它们的方法大略,即履行本钱低;

2、一旦让低权限用户可以访问这些方法,他们就能够以此向做事器履行有效攻击,即威胁影响大。

写到这里,大概大家都明白了,为什么要禁止除GET和POST外的HTTP方法,一是由于GET、POST已能知足功能需求,二是由于不禁止的话威胁影响大。

自纠自查方面 ,可以利用OPTIONS方法遍历做事器利用的HTTP方法。
但要把稳的是,不同目录中激活的方法可能各不相同。
而且许多时候,虽然反馈某些方法有效,但实际上它们并不能利用。
许多时候,纵然OPTIONS要求返回的相应中没有列出某个方法,但该方法仍旧可用。
总的来说,建议手动测试每一个方法,确认其是否可用。

详细方法,举例解释,利用curl测试:

1、测试OPTIONS是否相应 ,并是否有 Allow: GET, HEAD, POST, PUT , DELETE , OPTIONS

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

2、测试是否能通过PUT上传文件

curl -X PUT http://www.test.com/test/test.html -d “test”

3、找一个存在的文件,如test.txt,测试是否能删除

curl -X DELETE http://www.example.com/test/test.text