1.目录
一、概念
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container。其中连接器Connector和容器Container是Tomcat的核心。
一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。
3.Tomcat8弱密码&&后端Getshell漏洞
漏洞概述:
Tomcat支持通过后端部署war文件,所以我们可以直接把webshell放到web目录下。
欲访问后台,需要对应用户有相应权限。
经理(后台管理)
manager–gui(html页面权限)
manager–status(查看状态的权限)
manager–script(文本界面权限和状态权限)
manager–jmx(jmx 权限和状态权限)
主机管理器(虚拟主机管理)
admin–gui(html 页面权限)
admin–script(文本界面权限)
漏洞利用
用户权限在conf/tomcat–users.xml文件中配置:
可以看出,用户tomcat拥有上述所有权限,密码为tomcat。
Tomcat8正常安装默认没有用户,管理器页面只允许本地IP访问。只有管理员手动修改了这些属性,我们才能进行攻击。
漏洞复现
可以看到管理后台界面中有一个文件上传接口,但是只允许上传war包
接下来将冰蝎提供的shell.jsp压缩为zip文件然后更改后缀名为.war进行上传
漏洞概述:
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,其中就有远程代码执行漏洞(CVE-2017-12615)。当存在漏洞的Tomcat 运行在 Windows 主机上,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露或获取服务器权限。
漏洞利用:
在conf/web.xml中发现,默认配置readonly参数为true(默认值),即不允许DELETE和PUT操作。一般开发过程都会开启此配置,如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。
漏洞复现:
环境搭建:使用vulhub/tomcat/CVE-2017-12615
通过Burp Suite改包,将请求方法改成PUT,添加文件名txt1.txt ,可以看到成功上文件。
通过Burp Suite改包,将请求方法改成PUT,添加文件名shell.jsp/(注意后面要添加/或者%20或者::$DATA,主要就是绕过文件上传限制),请求体中添加jsp的冰蝎马。
漏洞概述:
由于Tomcat AJP 协议设计上存在缺陷,攻击者通过Tomcat AJP Connector可以读取或包含 Tomcat上所有 webapp目录下的任意文件,例如可以读取webapp 配置文件或源代码。
1. 用户点击网页内容,请求被发送到本机端口8080,被Connector获得(Connector中的Processor用于封装Request,Adapter用于将封装好的Request交给Container)。
2. Connector把该请求交给Container中的Engine来处理,并等待Engine的回应。
3. Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为” “的Context去处理)。
5. path=”/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类(匹配不到指定Servlet的请求对应DefaultServlet类)。
6. Wrapper是最底层的容器,负责管理一个Servlet。构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等程序。
7. Context把执行完之后的HttpServletResponse对象返回给Host。
8. Host把HttpServletResponse对象返回给Engine。
9. Engine把HttpServletResponse对象返回Connector。
10. Connector把HttpServletResponse对象返回给客户Browser。
漏洞利用:
Tomcat 配置了两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。
漏洞复现:
环境搭建:使用vulhub/tomcat/CVE-2020-1938
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.159.128 -p 8009 –f WEB-INF/web.xml
对比查看靶机下webapps下ROOT内WEB-INF/web.xml文件,一致
原文地址:https://blog.csdn.net/qq_56150805/article/details/130521561
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_42398.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!