要求:禁止使用不安全的 HTTP 方法,例如 PUT、DELETE 等。
缘由 1:Tomcat PUT 的上传漏洞,受影响的版本:Apache?Tomcat 7.0.0 to 7.0.79
当 Tomcat 运行在 Windows 操作系统时,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP 文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
利用条件:
Apache Tomcat 默认开启 PUT 方法,org.apache.catalina.servlets.DefaultServlet 的 readonly 默认为 true,需要手动配置 readonly 为 false 才可以进行漏洞利用,而且默认没有在 Tomcat/conf/web.xml 里写。
缘由 2: Nginx 在开启 WebDAV 模式下,如果未配置认证模式,攻击者可以通过自由上传文件方法上传木马攻击服务器。
WebDAV 简介
WebDAV(Web-based Distributed Authoring and Versioning)是基于 HTTP/1.1 的增强协议。该协议使用户可以直接对 Web 服务器进行文件读写,并支持对文件的版本控制和写文件的加锁及解锁等操作。说白了,Nginx 就是开启 WebDAV 这个协议后,可以当做一个文件服务器,允许用户在远端向本地一样进行读写操作,当然也包括上传文件。
由于 Nginx 在设计时,或许是为了减轻小白的上手难度,在开启 WebDAV 时没有强制要求用户必须配置访问认证,这导致了某些 SB 用户在公网上开启了 WebDAV 而没有进行认证配置,从而导致了安全问题。而且由于 WebDAV 支持的协议有?PUT、DELETE、MKCOL、COPY 和 MOVE 等,其中 PUT、DELETE 与 HTTP 方法中的 PUT、DELETE 协议重合,便被安全部门给一刀切了。
WebDAV 安全风险
PUT:由于 PUT 方法自身不带验证机制,利用 PUT 方法可以向服务器上传文件,所以恶意攻击者可以上传木马等恶意文件。
DELETE:利用 DELETE 方法可以删除服务器上特定的资源文件,造成恶意攻击。
OPTIONS:将会造成服务器信息暴露,如中间件版本、支持的 HTTP 方法等。
TRACE:可以回显服务器收到的请求,主要用于测试或诊断,一般都会存在反射型跨站漏洞。
总结: PUT/DELETE 在 HTTP 协议中是否安全主要跟代码逻辑相关,并非是使用了这种方法就造成访问不安全,由于代码是运行在容器中,如果容器配置不当,会导致一些安全风险,安全工程师并不理解代码背后的逻辑,从而将 PUT、DELETE 给一刀切了。
|