因此我们可以通过PUT方式上传木马
同时如果要防御该类漏洞将false改为true即可,即不允许DELETE和PUT操作
查看Tomcat版本知道存在远程代码执行
直接使用curl命令进行PUT上传
利用这点可以写入jspwebshell
附上python检测脚本:
Tomcat AJP 文件包含漏洞CVE-2020-1938
Ghostcat(幽灵猫) 是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
Tomcat AJP Connector
Tomcat Connector 是 Tomcat 与外部连接的通道,它使得 Catalina 能够接收来自外部的请求,传递给对应的 Web 应用程序处理,并返回请求的响应结果。
默认情况下,Tomcat 配置了两个 Connector,它们分别是 HTTP Connector 和 AJP Connector:
HTTP Connector:用于处理 HTTP 协议的请求(HTTP/1.1),默认监听地址为 0.0.0.0:8080 AJP Connector:用于处理 AJP 协议的请求(AJP/1.3),默认监听地址为 0.0.0.0:8009
HTTP Connector 就是用来提供我们经常用到的 HTTP Web 服务。而 AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol),AJP 协议可以理解为 HTTP 协议的二进制性能优化版本,它能降低 HTTP 请求的处理成本,因此主要在需要集群、反向代理的场景被使用。
查看8009端口是否开启,即AJP服务
验证漏洞存在可以使用xray:
https://github.com/chaitin/xray
附上检测EXP:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
命令:python3 CNVD-2020-10487-Tomcat-Ajp-lfi.py -p 8009 -f WEB-INF/web.xml
Tomcat8+ 弱口令 && 后台getshell漏洞
Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。
Tomcat7+权限分为:
manager(后台管理)
manager-gui 拥有html页面权限
manager-status 拥有查看status的权限
manager-script 拥有text接口的权限,和status权限
manager-jmx 拥有jmx权限,和status权限
host-manager(虚拟主机管理)
admin-gui 拥有html页面权限
admin-script 拥有text接口权限
在conf/tomcat-users.xml文件中配置用户的权限:
命令:
docker exec -ti tomcat8_tomcat_1 /bin/bash
可见,用户tomcat拥有上述所有权限,密码是tomcat。
正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。
访问http://192.168.42.128:8080/manager/html,tomcat-tomcat进行登录
上传war包中1.jsp内容如下:
访问http://192.168.42.128:8080/2/1.jsp?pwd=a&cmd=whoami即可