
Confluence 未認可テンプレートインジェクション
./confluence/WEB-INF/classes/confluence-init.properties ファイル内の confluence.home の値を Confluence ホームのパスに変更しますCATALINA_OPTS を追加しますWindows の場合、./bin/setenv.bat ファイル:
set CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Linux の場合、./bin/setenv.sh ファイル:
CATALINA_OPTS="-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5005 ${CATALINA_OPTS}"
Remote JVM Debug を作成し、host と port を localhost:5005 に設定し、Command line arguments for remote JVM を以下のように設定します:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
$ su - postgres
postgres@ubuntu:~$ psql -U postgres
postgres@ubuntu:~$ psql -U postgres
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1))
Type "help" for help.
postgres=# CREATE USER wiki WITH PASSWORD 'wiki';
CREATE ROLE
postgres=# CREATE DATABASE wiki OWNER wiki;
CREATE DATABASE
postgres=# GRANT ALL PRIVILEGES ON DATABASE jira TO wiki;
GRANT
デバッグ時に必要なソースを表示するために、以下の jar を lib に追加する必要があります: ./confluence/WEB-INF/atlassian-bundled-plugins/widgetconnector-x.x.x.jar、./confluence/WEB-INF/lib/confluence-x.x.x.jar、./confluence/WEB-INF/lib/velocity-x.x.x-atlassian-x.jar
./bin/start-confluence.bat を実行します。ソースからインストールする場合は、このガイド も参照してください。
説明を読んだ後、このバグが Widget Connector 機能から始まることがわかるので、すぐに Google でこの機能が何であるか、そしてどのように使用するかを調べました:
ページを編集します

その他のマクロを選択
Widget connector を選択

適当にパラメータを選択してプレビューをクリックし、その後 Burp に切り替えて何か面白いものがないか確認しました。

このパケットの中で、"pluginKey":"com.atlassian.confluence.extra.widgetconnector" というパラメータを見つけました。したがって、Widget Connector 機能がクラス com.atlassian.confluence.extra.widgetconnector で定義されていると推測し、パス内で怪しい jar パッケージを探しました。

ソースコードを読んでデバッグできるように、./confluence/WEB-INF/atlassian-bundled-plugins/widgetconnector-x.x.x.jar をプロジェクトの lib に追加してみました。
jar ファイルを lib に追加する方法
widgetconnector パッケージを開くと、WidgetMacro クラスに興味を持ったので、このクラスのコンストラクタと execute メソッドにブレークポイントを設定し、Preview 機能を使用したときにこのクラスが呼び出されるかどうかを確認しました 🕵️

execute メソッドが呼び出され、その後プログラムは DefaultRenderManager.getEmbeddedHtml を呼び出します。