
CVE-2022-45782の概念実証: 予測可能なdotCMSパスワードリセットトークン、トークンクラッカーと完全なエクスプロイトチェーンを備えています。
このリポジトリは、dotCMS の脆弱性 CVE-2022-45782 に対する概念実証エクスプロイトです。この脆弱性では、パスワードリセットトークンが暗号学的ではない手法 RandomStringUtils.randomAlphanumeric() を使用して生成されます。このトークンは予測可能であるため、攻撃者はブルートフォースまたは導出によって管理者アカウントのパスワードをリセットできます。
この PoC は、エクスプロイトチェーン全体を示します。
このリポジトリは、脆弱なトークン生成関数のクラッカーを含む Git サブモジュールを使用しています。これは、RandomStringUtils.randomAlphanumeric() によって生成されたパスワードリセットトークンを導出/推測するために使用されるクラッカーの C 実装です。
サブモジュール付きでクローン:
git clone https://github.com/alex91ar/randomstringutils.git
PoC を動作させるには、dotCMS がリセットメールを送信する必要があります。
docker-compose.yml を編集:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(Gmail を使用する場合: アプリパスワードを有効にし、生成された16文字のアプリパスワードを使用します。)
docker compose up
失敗した場合 (初回起動ではよくあります)、単に再度実行してください。
ログインページ: https://localhost:8443/dotAdmin/#/public/login
dotCMS 内部で:
これらの2つのアカウントが PoC で使用されます。
randomstringutils は、dotCMS の安全でないトークンに対するブルートフォース/クラッカーです。
以下のコマンドでコンパイル:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
これにより、高速なトークンクラッカーバイナリが生成されます。
python3 poc.py
成功すると、スクリプトは解析された管理者トークンを使用して管理アカウントをリセットします。
このリポジトリは、教育、学術、および許可されたセキュリティテストのみを目的としています。このエクスプロイトを、所有していないシステムやテストの明示的な許可がないシステムに対して使用しないでください。