banner
For1moc

For1moc

签到型CTFer

CVE-2023-6757の再現と検証+Docker環境の構築

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 つの問題があります。

  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

1

参考資料:

https://xz.aliyun.com/t/14366

https://nvd.nist.gov/vuln/detail/CVE-2023-6757

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。