
Cet exploit a été créé pour exploiter une XXE (XML External Entity). Grâce à lui, j'ai lu le code backend du service web et trouvé un endpoint où je pouvais utiliser gopher pour faire des requêtes internes sur Zabbix vulnérable à RCE.
python exploit.py --ip <Zabbix_IP> --sid <LowPrivileged_SID> --hostid <HostID> --phpsessid <PHPSESSID> --false_time <FalseTime> --true_time <TrueTime>
Cet exploit a été créé pour exploiter une XXE (XML External Entity). Grâce à cela, j'ai lu le code backend du service web et trouvé un endpoint où je pouvais utiliser gopher pour faire des requêtes internes sur Zabbix version 6.0.27 vulnérable à une exécution de code à distance.
Pendant la phase de reconnaissance, j'ai effectué une attaque par force brute sur le serveur web externe pour obtenir le fichier docker-compose.yml, qui fournissait le nom du conteneur des serveurs Zabbix internes. En utilisant cette information, j'ai envoyé une requête POST à la racine de l'application web via gopher et le serveur web a retourné l'host-id et le session id d'un utilisateur à faibles privilèges dans un JSON encodé en base64 dans le cookie.
Avec ces détails, j'ai pu adapter l'exploit original pour exploiter une vulnérabilité de type SQL Injection dans zabbix-server:10051 afin d'obtenir l'ID de session de l'administrateur, puis créer et exécuter un script pour réaliser une exécution de code à distance.
Si vous devez exploiter cette vulnérabilité Zabbix en utilisant gopher, vous pouvez modifier la fonction InternalRequest pour effectuer la requête de la manière dont vous avez besoin.
10.0.46.27:5555 dans le script).Assurez-vous que votre machine écoute sur le port spécifié (5555 dans le script) pour attraper le reverse shell. Vous pouvez utiliser netcat pour cela :
nc -lvnp 5555
Remplacez l'IP 10.0.46.27 et le port 5555 dans la fonction CreateScript par votre propre IP et le port souhaité pour recevoir le reverse shell.