
Questo exploit è stato creato per sfruttare una XXE (XML External Entity). Attraverso di essa, ho letto il codice backend del servizio web e ho trovato un endpoint in cui potevo usare gopher per effettuare richieste interne su Zabbix vulnerabile a RCE.
python exploit.py --ip <Zabbix_IP> --sid <LowPrivileged_SID> --hostid <HostID> --phpsessid <PHPSESSID> --false_time <FalseTime> --true_time <TrueTime>
Questo exploit è stato creato per sfruttare una XXE (XML External Entity). Attraverso di essa, ho letto il codice backend del servizio web e ho trovato un endpoint dove potevo usare gopher per effettuare richieste interne sui server Zabbix versione 6.0.27 vulnerabili a Remote Code Execution.
Durante la fase di ricognizione, ho eseguito un attacco di forza bruta sul server web esterno per ottenere il file docker-compose.yml, che ha fornito il nome del container dei server Zabbix interni. Usando queste informazioni, ho inviato una richiesta POST alla root dell'applicazione web tramite gopher e il server web ha restituito l'host-id e l'id di sessione di un utente con privilegi bassi in un JSON codificato in base64 nel cookie.
Con questi dettagli, sono stato in grado di adattare l'exploit originale per sfruttare una vulnerabilità di SQL Injection in zabbix-server:10051 per ottenere l'ID di sessione dell'amministratore, e poi creare ed eseguire uno script per ottenere l'esecuzione remota di codice.
Se hai bisogno di sfruttare questa vulnerabilità di Zabbix usando gopher, puoi modificare la funzione InternalRequest per effettuare la richiesta nel modo che ti serve.
10.0.46.27:5555 nello script).Assicurati che la tua macchina sia in ascolto sulla porta specificata (5555 nello script) per ricevere la reverse shell. Puoi usare netcat per questo:
nc -lvnp 5555
Sostituisci l'IP 10.0.46.27 e la porta 5555 nella funzione CreateScript con il tuo IP e la porta desiderata per ricevere la reverse shell.