
Analisi dell'exploit CVE-2023-22518 per Atlassian Confluence Server che copre configurazione, differenze nei JAR, causa principale e ripristino non autorizzato per riottenere l'accesso amministratore.
Exploit-CVE-2023-22518 CVE-2023-22518 in Confluence
CVE-2023-22518 : Questa vulnerabilità è descritta come “vulnerabilità di autorizzazione impropria nel database e nel server di Confluence”. Il difetto riguarda le versioni On-premises dei prodotti Atlassian.
Configurare l'ambiente utilizzando la versione vulnerabile 8.0.4. URL di download: https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-8.0.4-x64.exe

Scegliere Trial Installation, quindi fare clic sul link per ottenere la free trial key. Successivamente configurare il cluster: scegliere non-cluster

Successivamente passare alla configurazione del database -> Scegliere MySQL

Seguire le istruzioni:
Scaricare il driver MySQL
Inserire il file .jar in /home/lily/atlassian/confluence/confluence/WEB-INF/lib
Riavviare Confluence e continuare il processo di configurazione.
Configurare il database, creare l'utente e la password per la tabella
CREATE DATABASE securedb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'admin123'@'localhost' IDENTIFIED BY 'supersecure';
GRANT ALL PRIVILEGES ON securedb.* TO 'admin123'@'localhost';
GRANT SUPER ON *.* TO 'your_username'@'your_host';
FLUSH PRIVILEGES;
Successivamente edit /etc/mysql/my.cnf . Aggiungere le seguenti righe:
transaction-isolation = READ-COMMITTED
log_bin_trust_function_creators = 1

Successivamente riavviare MySQL e Confluence. Quindi andare alla pagina di configurazione su localhost:8090 e inserire il database creato

Verificare che la connessione sia riuscita, fare clic su Next. Successivamente registrarsi (Sign up).

** Diff tra i file jar delle due versioni su IntelliJ **

SystemAdminOnly: è una funzionalità che limita le funzioni di amministrazione ai soli account amministratore. Ciò garantisce che solo gli account autorizzati possano eseguire operazioni critiche che influiscono sul sistema.
Impostare un breakpoint su validate() in RestoreAction.class

La funzione salva il file caricato tramite getRestoreFileFromUpload

GetExportDescriptor viene utilizzato per decomprimere e leggere il contenuto del file zip


Tuttavia, dopo il debug, non è stata ancora trovata la causa principale della vulnerabilità
La causa descritta nella CVE è una vulnerabilità di autorizzazione. Questo porta a rivolgere l'attenzione alle ricerche sulle vulnerabilità del linguaggio Java durante il processo di gestione dei permessi da parte degli sviluppatori
Spostare l'attenzione sul file struts.xml: questo file contiene informazioni sulle azioni e sul routing basato sui namespace, nonché sugli interceptor.



Vediamo che il namespace /json estende le funzionalità del namespace /admin. Pertanto, le rotte create per il namespace /admin sono accessibili anche tramite il namespace /json.
Nel contesto del namespace /json, il processo di routing delle richieste prevede il passaggio attraverso una serie di interceptor. Uno di questi interceptor, chiamato WebSudoInterceptor, esegue controlli basati sull'URI della richiesta.
Nello specifico, WebSudoInterceptor esegue i seguenti controlli:
Se il percorso della richiesta è /authenticate.action, viene ignorato. Se il percorso della richiesta è /admin, verifica se l'attributo WebSudoNotRequired è vuoto.
Se una richiesta viene inviata a '/json', la richiesta a '/json/action' viene inoltrata a '/setup/action' e 'admin/action'. In questa CVE, il percorso vulnerabile è / 'json/setup-restore.action?synchronous=true'
Catturare la richiesta con Burp Suite, GET /json/setup-restore.action. Tuttavia si riceve una risposta "Method Not Allowed". Provare con POST /json/setup-restore.action?synchronous=true e si riceve una risposta 200


Caricare il file xmlexport-200123123001.zip

Inviare e ricevere la risposta

Ora possiamo accedere con account admin :admin

E si ottiene il seguente risultato
