
Exploit Python per CVE-2023-32315, un path traversal nella console admin di Openfire, che consente accesso non autenticato a pagine riservate. Include configurazione Docker e un plugin di gestione per post-exploitation.
⚠️ Solo per scopi educativi e di ricerca di sicurezza autorizzata
Molto grato all'autore originale del PoC phith0n e a K3ysTr0K3R
Openfire è un server XMPP distribuito con licenza open source Apache. La console amministrativa di Openfire, un'applicazione web, è risultata vulnerabile a un attacco di path traversal tramite l'ambiente di setup. Ciò ha permesso a un utente non autenticato di utilizzare l'ambiente di setup di Openfire non autenticato in un ambiente Openfire già configurato per accedere a pagine riservate della console di amministrazione di Openfire destinate agli utenti amministratori. Questa vulnerabilità interessa tutte le versioni di Openfire rilasciate da aprile 2015, a partire dalla versione 3.10.0. Il problema è stato corretto nelle release 4.7.5 e 4.6.8 di Openfire e ulteriori miglioramenti saranno inclusi nella prima versione, non ancora rilasciata, del ramo 4.8 (che dovrebbe essere la versione 4.8.0). Si consiglia agli utenti di aggiornare. Se un aggiornamento di Openfire non è disponibile per una release specifica o non è rapidamente attuabile, gli utenti possono consultare l'avviso GitHub collegato (GHSA-gw42-f939-fhvm) per consigli sulla mitigazione.
Per prima cosa, clona il repository
git clone https://github.com/asepsaepdin/CVE-2023-32315.git
Cambia directory
cd CVE-2023-32315
Lascia che il container si avvii
docker compose up
Esegui lo script python CVE-2023-32315.py per sfruttare l'host http://127.0.0.1:9090
python3 CVE-2023-32315.py -u http://localhost:9090
Quindi accedi alla console di amministrazione con questo account e potrai vedere che hugme è già un amministratore.
Vai alla scheda plugin > carica il plugin openfire-management-tool-plugin.jar
Vai alla scheda server > impostazioni del server > Management tool
Accedi alla websehll con la password "123"
Vai su ‘system command’ e utilizzalo come se fosse la riga di comando, usando un solo comando alla volta