
Exploite l'injection SQL de Zabbix (CVE-2024-42327) pour extraire la session admin et exécuter des commandes via l'API, obtenant un reverse shell.
_______ ________ ___ ____ ___ __ __ __ __ ___ ________ _____
/ ____/ | / / ____/ |__ \ / __ \__ \/ // / / // /|__ \|__ /__ \/__ /
/ / | | / / __/________/ // / / /_/ / // /_______/ // /___/ / /_ <__/ / / /
/ /___ | |/ / /__/_____/ __// /_/ / __/__ __/_____/__ __/ __/___/ / __/ / /
\____/ |___/_____/ /____/\____/____/ /_/ /_/ /____/____/____/ /_/
NSFOCUS CERT a détecté que Zabbix a publié un bulletin de sécurité et a corrigé la vulnérabilité d'injection SQL (CVE-2024-42327) du serveur Zabbix. En raison de la vulnérabilité SQLi dans la classe CUser de la fonction addRelatedObjects, les attaquants disposant d'une autorisation d'utilisateur par défaut ou d'un accès API peuvent appeler la fonction CUser.get. Cela pourrait conduire à un accès non autorisé à des informations sensibles ou à l'exécution de requêtes SQL arbitraires. Le score CVSS est de 9,9.
Ce PoC exploite cette vulnérabilité d'injection SQL. Pour l'approche d'injection SQL basée sur le temps, nous devons extraire la table des sessions de la base de données afin de déterminer si l'utilisateur Admin est connecté. Ce script fournit un script multi-thread pour accélérer l'extraction de la session admin en vue d'une exploitation ultérieure. Avec le jeton API de l'utilisateur admin, nous procédons à la création d'un élément, puis nous pouvons déclencher cet élément. Nous obtenons ensuite un shell inversé en envoyant une charge utile.
Pour résumer, cet outil extrait l'ID de session admin (admin_session) par injection SQL basée sur le temps à l'aide de l'API Zabbix, puis envoie une commande de shell inversé au système cible à l'aide de cet ID. Tout d'abord, le script reçoit les identifiants de l'utilisateur, envoie une requête d'authentification à l'API Zabbix et reçoit auth_token. Ensuite, il extrait l'ID admin_session par injection SQL. L'ID admin_session extrait est utilisé pour récupérer les ID d'hôte et d'interface avec la requête host.get envoyée à l'API Zabbix. Enfin, une requête item.create contenant la commande de shell inversé est envoyée avec les ID d'hôte et d'interface obtenus. De cette manière, un shell inversé est ouvert sur le serveur cible et une connexion est établie.
