中间件安全-tomacat篇


前言

Tomcat 是一个开源的轻量级Web 应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

PUT方法任意写文件漏洞(CVE-2017-12615)

Tomcat版本:8.5.19

漏洞本质Tomcat配置了可写(readonly=false),导致我们可以往服务器写文件:

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

虽然Tomcat对文件后缀有一定检测(不能直接写jsp),但我们使用一些文件系统的特性(如Linux下可用/)来绕过了限制。

漏洞复现

直接使用put方法上传shell

访问发现可以成功拿到shell:

Tomcat7+ 弱口令 && 后台getshell漏洞

正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。

Tomact 支持在后台部署war文件,如果可以通过弱口令进入后台,便可以通过部署恶意的war文件进行getshell。

但是要访问后台,需要用户有对应的权限,Tomcat7+权限分为:

  • manager(后台管理)
    • manager-gui 拥有html页面权限
    • manager-status 拥有查看status的权限
    • manager-script 拥有text接口的权限,和status权限
    • manager-jmx 拥有jmx权限,和status权限
  • host-manager(虚拟主机管理)
    • admin-gui 拥有html页面权限
    • admin-script 拥有text接口权限

这些权限的究竟有什么作用,详情阅读 http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html

conf/tomcat-users.xml文件中配置用户的权限:

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />

</tomcat-users>

漏洞复现

tomcat默认后台地址:http://xx/manager/html 使用弱口令tomcat和tomcat进入后台。

war包制作方法,把jsp文件压缩成zip文件然后改名为war文件上传即可。这里使用的是兵蝎马。访问发现是500错误,但是没有关系这是因为冰蝎没有进行报错处理。

image-20200806093802043

使用冰蝎连接即可:

文件包含漏洞(CVE-2020-1938)

影响版本:

Apache Tomcat 6

Tomcat 7系列 <7.0.100

Tomcat 8系列 < 8.5.51

Tomcat 9 系列 <9.0.31

攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码等。 如果目标存在上传文件功能还可以利用这个来进行任意代码执行,可参考文章:CVE-2020-1938(RCE利用)

网上有很多检测的poc,这里列举两个:

https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

https://github.com/0nise/CVE-2020-1938

使用第一个poc进行测试:

image-20200806101138095


文章作者: EASY
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EASY !
 上一篇
中间件安全-IIS篇 中间件安全-IIS篇
前言IIS是一种Web(网页)服务组件,其中包bai括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。 解析漏
2020-08-05 EASY
下一篇 
中间件安全-nginx篇 中间件安全-nginx篇
前言Nginx 是一款轻量级Web 服务器、 反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 其特点是 占有内存少, 并发能力强(来自百度) Nginx解析漏洞该漏洞与nginx和php的版本无关属于用户配置错误的漏洞。如下是p
2020-08-05 EASY
  目录