Zabbix exécute des commandes par conception, pour collecter des données et réagir aux problèmes, de sorte que pour un attaquant disposant d'un accès suffisant, c'est une plateforme d'exécution de code. Il existe plusieurs primitives distinctes. Des clés d'item telles que system.run[] s'exécutent sur un agent Zabbix lorsque l'item est évalué. Les scripts globaux et les scripts d'alerte (action) exécutent des commandes sur le serveur Zabbix (ou sur un agent sélectionné) lorsqu'ils se déclenchent. L'agent Zabbix sur le port 10050 exécute directement system.run là où les commandes distantes sont autorisées, accessible sans passer par le serveur. L'injection SQL dans le frontend extrait des sessions et des identifiants et s'enchaîne avec ce qui précède. Et le serveur comme le frontend ont connu leurs propres vulnérabilités d'exécution de code à distance. Le serveur et les agents exécutent ces commandes sous leurs comptes de service (souvent zabbix, parfois davantage), de sorte que l'exécution constitue un point d'appui sur l'hôte de supervision et, à travers les agents, sur les hôtes supervisés.
Sous-thèmes#
- Exécution de commandes par item : system.run et items de commande sur les agents.
- Scripts globaux et scripts d'alerte : scripts qui s'exécutent sur le serveur.
- Commandes distantes d'agent : exécution directe contre l'agent en 10050.
- De l'injection SQL à la RCE : SQLi dans le frontend et ses chaînes.
- Vulnérabilités serveur connues : la RCE serveur/frontend récurrente.