
Démonstration éducative de CVE-2022-46169 : exécution de code à distance non authentifiée dans Cacti ≤1.2.22 via contournement d'autorisation et injection de commandes. Comprend la configuration du laboratoire, la reproduction de l'exploit et l'analyse d'impact.
Voici le document d'explication reformulé :
Ce projet est un exercice de cybersécurité qui démontre CVE‑2022‑46169 : une vulnérabilité critique dans la plateforme open-source de surveillance réseau Cacti (versions ≤ 1.2.22). La vulnérabilité permet à un attaquant non authentifié d'exécuter des commandes OS arbitraires sur le serveur — sans aucune connexion.
L'objectif de ce projet est de comprendre la vulnérabilité, de la reproduire dans un environnement de laboratoire contrôlé, et d'en démontrer l'impact.
CVE‑2022‑46169 est une combinaison de deux défauts dans Cacti :
Le fichier remote_agent.php ne devrait normalement être accessible que par le serveur Cacti lui-même. Cependant, la vérification d'authentification se fie aveuglément à l'en-tête HTTP , qui peut être défini par l'attaquant lui-même. Ainsi, n'importe qui peut se faire passer pour le serveur lui-même — sans mot de passe.
X-Forwarded-ForLe paramètre poller_id de l'URL est directement inséré dans une commande shell via proc_open() de PHP sans validation. Un attaquant peut ainsi faire exécuter ses propres commandes par le serveur web.
Résultat combiné : un attaquant totalement non authentifié peut exécuter des commandes arbitraires sur le serveur — également appelé Remote Code Execution (RCE) .
| Propriété | Détails |
|---|---|
| Score CVSS | 9.8 – Critique |
| Authentification requise | ❌ Non |
| Interaction utilisateur | ❌ Non |
| Impact | Contrôle total du serveur |
| Versions affectées | Cacti ≤ 1.2.22 |
| Corrigé dans | Cacti 1.2.23 |
Un attaquant doit seulement connaître l'adresse IP d'une installation Cacti vulnérable. Aucun compte ou ingénierie sociale n'est nécessaire.
L'attaquant envoie une seule requête HTTP à remote_agent.php avec :
X-Forwarded-For falsifié → contournement de l'authentificationpoller_id avec une commande shell intégrée via ; → injection de commandeLe serveur exécute cette commande en tant qu'utilisateur www-data (l'utilisateur du serveur web Apache). En pratique, un attaquant peut ainsi ouvrir un reverse shell et obtenir un accès complet au serveur.
docs/ — Rapport, captures d'écran et notes pour l'exercice.isos/ — Images VM ou actifs de conteneur avec l'installation Cacti vulnérable.Ce projet fait partie d'un exercice de cybersécurité qui met l'accent sur :
⚠️ Avertissement : Ce projet est uniquement destiné à des fins éducatives dans un environnement de laboratoire contrôlé et isolé. N'utilisez jamais d'exploits sur des systèmes sans autorisation explicite.