La base de code PHP de Cacti a produit un flux régulier de vulnérabilités de haute sévérité, et plusieurs atteignent l'exécution de code à distance sur le serveur. Les classes : injection de commandes non authentifiée dans la gestion de l'agent distant/poller (accessible là où l'adresse de l'attaquant est de confiance ou où le contrôle d'autorisation est contourné), injection de commandes authentifiée via des entrées qui aboutissent dans des commandes shell (champs de sources de données, options SNMP passées aux binaires net-snmp, et paramètres de graphe/poller), et chaînes d'injection SQL qui extraient des données ou se combinent avec ce qui précède. Pour une cible, identifiez la version exacte et faites-la correspondre à l'avis applicable, car l'endpoint vulnérable et son caractère pré-authentification sont spécifiques à la version, certains des bugs Cacti les plus impactants ne nécessitant aucune connexion.
# fingerprint (see enumeration), then match the version to the advisory
curl -sk https://<target>/cacti/CHANGELOG | head -1
# examples of the surfaces (version-specific):
# unauth command injection via the remote agent handler (poller/remote_agent.php)
# authenticated command injection via SNMP options / data input reaching net-snmp
# SQLi chains in graph/management endpoints
# the injected command runs as the Cacti web/poller user on the server.
Notes d'exploitation#
- Identifiez la version et faites correspondre l'avis : l'endpoint exploitable et son caractère non authentifié sont spécifiques à la version, et les failles d'injection de commandes non authentifiées sont les plus précieuses (aucun identifiant requis).
- Les failles authentifiées s'associent à la connexion par défaut/faible ; l'injection d'options SNMP, par exemple, nécessite une configuration de source de données authentifiée.
- L'exécution se fait en tant qu'utilisateur web/poller de Cacti sur le serveur, qui a accès à la base de données Cacti détenant les identifiants stockés de chaque équipement.
- Metasploit et des PoC publics couvrent plusieurs chaînes Cacti ; la correspondance de version sélectionne la bonne.