
Iniezione di template non autorizzata in Confluence
confluence.home sull'indirizzo della home di Confluence nel file ./confluence/WEB-INF/classes/confluence-init.propertiesCATALINA_OPTS affinché il programma possa essere eseguito in modalità remote debugSu Windows, file ./bin/setenv.bat
set CATALINA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
su Linux, file ./bin/setenv.sh
CATALINA_OPTS="-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=5005 ${CATALINA_OPTS}"
Remote JVM Debug con host e port impostati su localhost:5005 e con Command line aguments 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
Dobbiamo aggiungere i jar: ./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 alla libreria, così durante il debug possiamo vedere il sorgente necessario.
Eseguiamo il file ./bin/start-confluence.bat e potete consultare anche questa guida per installare dal sorgente.
Dopo aver letto la descrizione, sappiamo che il bug ha origine dalla funzionalità Widget Connector, quindi cerco subito su Google per capire di cosa si tratta e come si usa:
per modificare una pagina

Seleziona Altre macro
Seleziona Widget connector

Scelgo dei parametri a caso, premo su Preview e poi passo da Burp per vedere se c'è qualcosa di interessante.

In questo pacchetto vedo un parametro "pluginKey":"com.atlassian.confluence.extra.widgetconnector", quindi suppongo che la funzionalità Widget Connector sia definita nella classe com.atlassian.confluence.extra.widgetconnector; cerco quindi nel path se c'è qualche jar sospetto.

Provo ad aggiungere il file ./confluence/WEB-INF/atlassian-bundled-plugins/widgetconnector-x.x.x.jar alla libreria del progetto per poter leggere il codice sorgente e fare debug.
Come aggiungere un file jar alla libreria
Apro il pacchetto widgetconnector, simpatizzo con la classe WidgetMacro, quindi metto un breakpoint nel costruttore e nel metodo execute di questa classe per vedere se viene chiamata quando uso la funzionalità Preview 🕵️

execute viene chiamato, poi il programma chiama DefaultRenderManager.getEmbeddedHtml