
Unautorisierte Template-Injection in Confluence
confluence.home in der Datei ./confluence/WEB-INF/classes/confluence-init.properties auf die Adresse des Confluence-Home ändernCATALINA_OPTS hinzufügen, damit das Programm im Remote-Debug-Modus laufen kannUnter Windows, Datei ./bin/setenv.bat
set CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
unter Linux, Datei ./bin/setenv.sh
CATALINA_OPTS="-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5005 ${CATALINA_OPTS}"
Remote JVM Debug mit den Werten host und port als localhost:5005 und 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
Wir müssen die Jar-Dateien ./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 zur lib hinzufügen, damit wir beim Debuggen den benötigten Quellcode sehen können.
Wir führen die Datei ./bin/start-confluence.bat aus, und ihr könnt euch zusätzlich diese Anleitung ansehen, um aus dem Quellcode zu installieren.
Nach dem Lesen der Beschreibung wissen wir, dass dieser Bug von der Funktion Widget Connector ausgeht. Deshalb habe ich sofort gegoogelt, um herauszufinden, was diese Funktion ist und wie man sie verwendet:
Eine Seite bearbeiten

Andere Makros auswählen
Widget-Connector auswählen

Ich wähle willkürlich ein paar Parameter aus und klicke auf Vorschau, danach wechsle ich zu Burp, um zu sehen, ob es etwas Interessantes gibt.

In diesem Paket sehe ich einen Parameter "pluginKey":"com.atlassian.confluence.extra.widgetconnector". Daher vermute ich, dass die Funktion Widget Connector in der Klasse com.atlassian.confluence.extra.widgetconnector definiert ist. Also habe ich im Pfad gesucht, ob es eine verdächtige Jar-Datei gibt.

Ich versuche, die Datei ./confluence/WEB-INF/atlassian-bundled-plugins/widgetconnector-x.x.x.jar zur lib des Projekts hinzuzufügen, um den Quellcode lesen und debuggen zu können.
So fügt man eine Jar-Datei zur lib hinzu
Beim Öffnen des Pakets widgetconnector hat es mir die Klasse WidgetMacro angetan. Deshalb setze ich einen Breakpoint im Konstruktor und in der execute-Funktion dieser Klasse, um zu sehen, ob diese Klasse aufgerufen wird, wenn ich die Vorschaufunktion verwende 🕵️
execute wurde aufgerufen, danach ruft das Programm DefaultRenderManager.getEmbeddedHtml auf