Tomcat相关知识点学习
Tomcat PUT任意文件上传(CVE-2017-12615)
当存在漏洞的Tomcat 启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。
影响范围:Apache Tomcat 5.x 到 9.x
Tomcat设置写权限(只读的= false),导致的结果我们可以写文件到服务器。
1 |
<servlet> |
虽然Tomcat检查文件后缀在某种程度上(不能直接编写jsp),我们仍然可以绕过限制通过文件系统的一些特性(例如使用/ Linux和window,使用%20、::$DATA window)
漏洞复现:
启动vulhub环境,利用 PUT 请求创建文件:
提示404,JspServlet负责处理所有JSP和JPSX类型的动态请求,不能够处理PUT方法类型的请求。
利用系统特性绕过
漏洞分析:
tomcat7后台war部署上传shell
Tomcat支持在后台部署 war 文件,可以直接将 webshell 部署到 web 目录下。其中,欲访问后台,需要对应用户有相应权限。
Tomcat7+权限分为:
1 |
manager(后台管理) |
在conf/tomcat-users.xml文件中配置用户的权限
1 |
|
tomcat8中默认没有任何用户,且manager页面只允许本地IP访问
漏洞复现:
用户名密码:tomcat:tomcat
getshell
Tomcat AJP 文件包含漏洞(CVE-2020-1938)
Ghostcat(幽灵猫) 是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
Tomcat根据默认配置(conf/server.xml)启动两个连接器。一个是HTTP Connector默认监听8080端口处理HTTP请求,一个AJP connector默认8009端口处理AJP请求。Tomcat处理两个协议请求区别并不大,AJP协议相当于HTTP协议的二进制优化版。
本次漏洞出现在通过设置AJP请求属性,可控制AJP连接器封装的request对象的属性,最终导致文件包含可以任意文件读取和代码执行。
受影响版本
1 |
Apache Tomcat 6 |
利用工具:
CNVD-2020-10487-Tomcat-Ajp-lfi
1 |
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 目的ip -p 8009 -f /WEB-INF/web.xml |
工具二:https://github.com/0nise/CVE-2020-1938
漏洞分析:
tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性
因此可以通过此种特性从而可以控制request对象的下面三个Attribute属性
1 |
javax.servlet.include.request_uri |
详情可看:
Tomcat-Ajp协议漏洞分析
CVE-2020-1938:Tomcat AJP协议文件包含漏洞分析
Apache Tomcat Websocket DoS(CVE-2020-13935 )
详情可看:
CVE-2020-13935 Apache Tomcat Websocket DoS 漏洞分析
FROM :blog.cfyqy.com | Author:cfyqy
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论