CVE-2017-12615 Tomcat远程命令执行漏洞
漏洞简介
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,其中 远程代码执行漏洞(CVE-2017-12615) 当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。
漏洞原理
org.apache.jasper.servlet.JspServlet:默认处理jsp,jspx文件请求,不存在PUT上传逻辑,无法处理PUT请求
org.apache.catalina.servlets.DefaultServlet:默认处理静态文件(除jsp,jspx之外的文件),存在PUT上传处理逻辑,可以处理PUT请求。
所以即使可以PUT一个文件到服务器但也无法直接PUT以jsp,jspx结尾文件,因为这些这些后缀的文件都是交由JspServlet处理的,它没法处理PUT请求。
但是当利用Windows特性绕过文件名检测机制时,tomcat并不认为其是jsp文件从而交由DefaultServlet处理,从而成功创建jsp文件
影响版本
Apache Tomcat 7.0.0 - 7.0.79(7.0.81修复不完全)
环境从vulhub上面拉取镜像复现
然后抓取get请求包
将get请求包改变成put请求包 ,Tomcat允许适⽤put⽅法上传任意⽂件类型,但不允许jsp后缀⽂件上传,因此我们需要配合 windows的 解析漏洞.(利用文件上传绕过)
PUT /shell.jsp%20
PUT /shell.jsp::$DATA
PUT /shell.jsp/
进入容器发现写入
从浏览器访问这个文件
发现有,如果写成jsp的一句话木马,那么使用连接工具也可以成功,这样就获取了shell权限
后台弱⼝令部署war包
漏洞原理
在tomcat8环境下默认进⼊后台的密码为 tomcat/tomcat ,未修改造成未授权即可进⼊后台,或者管理员把密码设置成弱⼝令。
影响版本
全版本(前提是⼈家存在弱⼝令)
环境复现
制作WAR包
制作WAR包,将JSP木马压缩为ZIP格式,然后修改后缀为war就可以了。
CVE-2020-1938
Tomcat文件包含漏洞
漏洞原理
由于Tomcat AJP协议设计上的缺陷,攻击者通过Tomcat AJP Connector 可以读取或包含Tomcat上所有Webapp⽬录下的任意⽂件,例如:
可以读取webapp配置⽂件或源码⽂件。
此外如果⽬标应⽤有⽂件上传的功能情况下,配合为⽂件包含漏洞利⽤GetShell。
影响版本
Apache Tomcat 6
Tomcat 7系列 <7.0.100 Tomcat 8系列 < 8.5.51 Tomcat 9 系列 <9.0.31
环境复现
下载专门的工具CVE-2020-1938,并且此文件用Python打开
使用方法
python2 Tomcat-ROOT路径下文件包含(CVE-2020-1938) -p8009 -f 木马文件夹名 ip