Skip to main content

Microweber CMS CVE-2026-67617

| EUVDEUVD-2026-52487 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-03 VulnCheck GHSA-793c-7c93-m769
4.8
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Obtain Microweber admin credentials
  2. Delivery
    Craft decimal entity-encoded XSS payload in tag_names
  3. Exploit
    Submit GET /api/save_content_admin bypassing all three sanitizers
  4. Install
    Payload persisted to CMS database
  5. C2
    Victim visits public blog page
  6. Execute
    Injected script executes in victim browser
  7. Impact
    Same-origin CSRF token reused for authenticated action

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Admin-level authentication to the Microweber CMS application is required to stage the injection - this is the single most significant limiting condition, confirmed by PR:H in the CVSS 4.0 vector. The content tagging feature must be reachable by the authenticated admin via GET /api/save_content_admin, which is present in default installations through 2.0.20 with no non-default configuration required. The three sanitization bypasses (HTTP-method-blind middleware, narrow unsafe-attribute pattern, decimal entity passthrough) are inherent default behaviors of the codebase - no special mode or feature flag is needed to trigger them. For the stored payload to execute against blog visitors, the public blog page must be live and accessed; for execution in the admin editor, another admin must open the affected post. No special operating system, hosting environment, or plugin configuration beyond a default Microweber installation is required. What limits exploitation: the PR:H admin credential requirement is the primary real-world barrier; absence of a KEV listing suggests no confirmed opportunistic mass targeting at time of analysis.

Impact

The CVSS 4.0 score of 4.8 (Medium) is appropriate and reflects the key limiting factor: PR:H requires admin-level authentication before the injection can be staged. The attack vector is network (AV:N) with low complexity once authenticated, so the real-world gate is credential possession, not technical difficulty. Subsequent-system impact is rated Low/Low (SC:L/SI:L) in the CVSS 4.0 vector, consistent with a cross-origin script reaching victim sessions rather than directly compromising server-side resources. Three significant risk amplifiers elevate practical concern beyond the raw score: a public POC exists on GitHub, sharply reducing the skill threshold for exploitation; the payload persists and fires for every blog visitor with zero further interaction, creating a broad blast radius from a single admin compromise; and the CSRF token reuse path enables authenticated actions on behalf of victims, including potential privilege escalation chains if the affected instance has multiple admins. The primary mitigant is the PR:H prerequisite - this is not remotely exploitable without prior admin compromise. EPSS data was not provided. No KEV listing exists, indicating no confirmed mass exploitation. In multi-tenant SaaS deployments of Microweber or environments where admin credentials are shared or weakly protected, practical risk is meaningfully higher than the numeric score implies.

Exploit ScenarioDerived

An attacker holding Microweber admin credentials submits a GET request to /api/save_content_admin with a tag_names value containing a decimal entity-encoded event-handler payload - bypassing the middleware, strip_unsafe pattern, and titlecase normalizer - causing the script to be written to the database. Every visitor to the public blog page thereafter executes the payload, which silently reads the CSRF token embedded in the page and issues authenticated same-origin fetch requests to perform admin-level actions on the victim's behalf. A public POC demonstrating this full chain is available at https://github.com/theopaid/Stored-XSS-via-Content-Tag-Names-Microweber-.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 03, 2026

Stored XSS in Microweber CMS through version 2.0.20 allows admin-authenticated attackers to persist arbitrary JavaScript via the tag_names parameter of the GET /api/save_content_admin endpoint, defeating three independent sanitization layers through a combination of HTTP-method blind middleware, an overly narrow unsafe-attribute pattern, and a titlecase normalizer that passes HTML decimal entity-encoded payloads unchanged. Injected scripts execute silently for every public blog visitor and within the admin post editor, enabling same-origin CSRF token abuse for session riding and account takeover chaining. A public proof-of-concept exploit exists; no CISA KEV listing is present at time of analysis.

RemediationAI

No vendor-released patch has been confirmed at time of analysis - neither the VulnCheck advisory nor the POC repository specifies a fixed Microweber version, so patch availability is unconfirmed and administrators should monitor the official Microweber release channel directly. As an immediate compensating control, restrict network access to the /api/save_content_admin endpoint at the WAF or reverse-proxy layer to known administrative IP ranges, eliminating the ability of a compromised admin account operating from an unexpected location to stage the injection (trade-off: disrupts legitimate remote admin workflows). Deploy a strict Content Security Policy header with a restrictive script-src directive to limit the blast radius of any stored payload that reaches a visitor's browser - this does not prevent storage but reduces exploitability of execution. At the WAF level, blocking requests to /api/save_content_admin via GET method (since mutations over GET are anomalous) would eliminate this specific bypass vector without impacting standard POST-based workflows. Full technical reproduction detail is available at https://github.com/theopaid/Stored-XSS-via-Content-Tag-Names-Microweber-.

Affected VersionsENISA

microweber 0 ≤2.0.20

Affected Packages

euvd microweber no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Microweber is a PHP-based open-source CMS (CPE: cpe:2.3:a:microweber:microweber:*:*:*:*:*:*:*:*) whose content tagging subsystem accepts free-form tag names through a GET-method API mutation endpoint - an architectural anomaly that is itself the root of the first bypass. CWE-79 (Improper Neutralization of Input During Web Page Generation) applies across three distinct sanitization failures that compound rather than overlap: (1) the XSS middleware inspects only POST bodies, leaving the GET /api/save_content_admin surface entirely unscreened; (2) the strip_unsafe() function relies on a literal pattern matching double-quoted onerror attributes, failing to catch single-quoted variants, alternate event handlers, or non-attribute payloads; and (3) a titlecase normalizer intended to clean tag display strings passes HTML decimal numeric character references (e.g. &#60; for <) unmodified, which compliant browsers decode at render time before any downstream escaping can occur. The stored tag value is later reflected without encoding on the public blog listing page and within the admin post editor, providing two distinct persistent execution surfaces.

Know when Microweber gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 4.8 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 4.8 MEDIUM

Network-reachable stored XSS requiring admin credentials (PR:H), scope changes to victim browsers (S:C), limited C/I impact, no availability effect.

3.1 AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
High
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

Microweber CMS through 2.0.20 contains a stored cross-site scripting vulnerability in the content tagging system that allows admin-authenticated attackers to inject arbitrary JavaScript by submitting malicious payloads via the tag_names parameter of the GET /api/save_content_admin endpoint, bypassing three independent sanitization controls including XSS middleware that ignores GET requests, a strip_unsafe() function that only matches double-quoted onerror attributes, and a titlecase normalizer that passes HTML decimal entity-encoded payloads through unchanged. Attackers can store malicious scripts that execute without user interaction for every visitor to the public blog page and within the admin post editor, enabling session riding through same-origin fetch requests using the CSRF token embedded in the page.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
niche open-source PHP CMS with limited enterprise adoption
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

CVE-2025-34076 MEDIUM POC
6.1 Jul 02

Authenticated arbitrary file disclosure in Microweber CMS 1.2.11 and earlier lets any logged-in user read files from the

CVE-2023-1877 CRITICAL POC
9.8 Apr 05

Command Injection in GitHub repository microweber/microweber prior to 1.3.3. Rated critical severity (CVSS 9.8), this vu

CVE-2022-2368 CRITICAL POC
9.8 Jul 11

Authentication Bypass by Spoofing in GitHub repository microweber/microweber prior to 1.2.20. Rated critical severity (C

CVE-2022-0895 CRITICAL POC
9.8 Mar 10

Static Code Injection in GitHub repository microweber/microweber prior to 1.3. Rated critical severity (CVSS 9.8), this

CVE-2026-65694 HIGH POC
8.7 Jul 23

Unauthenticated arbitrary file read in Microweber CMS through version 2.0.20 lets remote attackers retrieve sensitive fi

CVE-2023-49052 HIGH POC
8.8 Nov 30

File Upload vulnerability in Microweber v.2.0.4 allows a remote attacker to execute arbitrary code via a crafted script

CVE-2022-33012 HIGH POC
8.8 Nov 22

Microweber v1.2.15 was discovered to allow attackers to perform an account takeover via a host header injection attack.

CVE-2022-1631 HIGH POC
8.8 May 09

Users Account Pre-Takeover or Users Account Takeover. Rated high severity (CVSS 8.8), this vulnerability is remotely exp

CVE-2022-0896 HIGH POC
8.8 Mar 09

Improper Neutralization of Special Elements Used in a Template Engine in GitHub repository microweber/microweber prior t

CVE-2018-17104 HIGH POC
8.8 Sep 16

An issue was discovered in Microweber 1.0.7. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable,

CVE-2026-65693 HIGH POC
8.6 Jul 24

Authenticated administrators can execute arbitrary OS commands on Microweber CMS through 2.0.20 by injecting unsandboxed

CVE-2014-9464 HIGH POC
7.5 Jan 03

SQL injection vulnerability in Category.php in Microweber CMS 0.95 before 20141209 allows remote attackers to execute ar

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy