Every CVE Search/ Get API key

CVE-2026-52774

Reflected XSS via Unescaped `id` Parameter in Bazar Widget HTML Attributes in YesWiki

6.1 MediumPublic exploitFix available

YesWiki is a wiki system written in PHP. Prior to version 4.6.6, YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser. This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter. This issue has been patched in version 4.6.6.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
Required

What an attacker can affect

Confidentiality
Low
Integrity
Low
Availability
None

Exploit likelihood

0.66%Up 0.6 points since Jun 14, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.1

Reflected XSS via Unescaped `id` Parameter in Bazar Widget HTML Attributes in YesWiki

YesWiki is a wiki system written in PHP. Prior to version 4.6.6, YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser. This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter. This issue has been patched in version 4.6.6.

Record
CVE-2026-52774
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-80
Updated
2026-11-02
EUVDEUVD-2026-71806 6.1

YesWiki is a wiki system written in PHP. Prior to version 4.6.6, YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser. This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter. This issue has been patched in version 4.6.6.

Record
EUVD-2026-71806
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-r5xw-gcgw-hwp5 6.1

YesWiki Vulnerable to Reflected XSS via Unescaped `id` Parameter in Bazar Widget HTML Attributes

Summary

YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser.

This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter.

Details

The primary sink is in tools/bazar/presentation/templates/widget.tpl.html around lines 4-7, where $_GET['id'] is inserted into the data-formid attribute:

data-formid="<?php echo strip_tags($_GET['id']); ?>"

strip_tags() is not an output-encoding function. It removes HTML tags, but it does not escape characters such as double quotes, so an attacker can terminate the data-formid attribute and inject new attacker-controlled attributes.

The route is served by tools/bazar/handlers/__WidgetHandler.php around lines 14-26, which only checks whether $_GET['id'] is present:

if (!isset($_GET['id'])) {
    return null;
}

No HasAccess('read'), HasAccess('write'), or authentication check is performed before the vulnerable template is rendered.

There is also a second reflection path in the same handler. The handler builds:

$urlParams = 'id=' . strip_tags($_GET['id']) . ...

and then places the resulting value into the widget template's data-iframeUrl attribute:

data-iframeUrl="<?php echo $GLOBALS['wiki']->href('bazariframe', '', $urlparams, false); ?>"

During validation, a single payload injected into id was reflected into both data-formid and data-iframeUrl, which confirms that the handler exposes multiple attribute-level sinks from the same unsafely handled input.

This issue maps to CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').

PoC

  1. Set up a vulnerable YesWiki instance with the bundled Bazar extension enabled. This was validated locally on the official doryphore 4.6.5 release.
  2. Confirm the minimum access requirements:
    • No account is required.
    • No read or write permission on a specific page is required.
    • No valid existing page tag is required.
    • No valid Bazar form identifier is required.
    • The only observed requirements were that the Bazar widget handler is present and the request includes an id parameter.
  3. Request the widget handler with an attribute-breaking payload in id, for example:
http://127.0.0.1:8085/NoSuchPage/widget?id=%22%20onmouseover=%22alert(1)%22%20x=%22
  1. Open the URL in a browser as an unauthenticated visitor.
  2. Observe that the server returns HTTP 200 and renders the Bazar widget page even though the page tag is arbitrary.
  3. Inspect the returned HTML. The response contains attacker-controlled attributes in the widget root element:
<div id="widgetapp" v-cloak
  data-formid="" onmouseover="alert(1)" x=""
  ...
  data-iframeUrl="http://127.0.0.1:8085/NoSuchPage/bazariframe&id=" onmouseover="alert(1)" x=""
>
  1. Move the mouse over the widgetapp element or otherwise trigger the injected event handler.
  2. The browser executes the injected JavaScript in the YesWiki origin.

<img width="1600" height="838" alt="image" src="https://github.com/user-attachments/assets/de592586-a6ee-48f4-bbde-137ab07aaa71" />

Impact

This is a reflected XSS vulnerability in the Bazar widget handler with very low attacker prerequisites.

The practical access model is:

  • The attacker only needs to send a crafted public URL.
  • The victim does not need to authenticate.
  • The attacker…
Record
GHSA-r5xw-gcgw-hwp5
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-80
Updated
2026-11-02
NVD 6.1

YesWiki is a wiki system written in PHP. Prior to version 4.6.6, YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser. This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter. This issue has been patched in version 4.6.6.

Record
CVE-2026-52774
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-80
Updated
2026-11-02
OSV 6.1

Reflected XSS via Unescaped `id` Parameter in Bazar Widget HTML Attributes in YesWiki

YesWiki is a wiki system written in PHP. Prior to version 4.6.6, YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser. This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter. This issue has been patched in version 4.6.6.

Record
CVE-2026-52774
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-80
Updated
2026-11-02
OSVGHSA-r5xw-gcgw-hwp5 6.1

YesWiki Vulnerable to Reflected XSS via Unescaped `id` Parameter in Bazar Widget HTML Attributes

Summary

YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser.

This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter.

Details

The primary sink is in tools/bazar/presentation/templates/widget.tpl.html around lines 4-7, where $_GET['id'] is inserted into the data-formid attribute:

data-formid="<?php echo strip_tags($_GET['id']); ?>"

strip_tags() is not an output-encoding function. It removes HTML tags, but it does not escape characters such as double quotes, so an attacker can terminate the data-formid attribute and inject new attacker-controlled attributes.

The route is served by tools/bazar/handlers/__WidgetHandler.php around lines 14-26, which only checks whether $_GET['id'] is present:

if (!isset($_GET['id'])) {
    return null;
}

No HasAccess('read'), HasAccess('write'), or authentication check is performed before the vulnerable template is rendered.

There is also a second reflection path in the same handler. The handler builds:

$urlParams = 'id=' . strip_tags($_GET['id']) . ...

and then places the resulting value into the widget template's data-iframeUrl attribute:

data-iframeUrl="<?php echo $GLOBALS['wiki']->href('bazariframe', '', $urlparams, false); ?>"

During validation, a single payload injected into id was reflected into both data-formid and data-iframeUrl, which confirms that the handler exposes multiple attribute-level sinks from the same unsafely handled input.

This issue maps to CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting').

PoC

  1. Set up a vulnerable YesWiki instance with the bundled Bazar extension enabled. This was validated locally on the official doryphore 4.6.5 release.
  2. Confirm the minimum access requirements:
    • No account is required.
    • No read or write permission on a specific page is required.
    • No valid existing page tag is required.
    • No valid Bazar form identifier is required.
    • The only observed requirements were that the Bazar widget handler is present and the request includes an id parameter.
  3. Request the widget handler with an attribute-breaking payload in id, for example:
http://127.0.0.1:8085/NoSuchPage/widget?id=%22%20onmouseover=%22alert(1)%22%20x=%22
  1. Open the URL in a browser as an unauthenticated visitor.
  2. Observe that the server returns HTTP 200 and renders the Bazar widget page even though the page tag is arbitrary.
  3. Inspect the returned HTML. The response contains attacker-controlled attributes in the widget root element:
<div id="widgetapp" v-cloak
  data-formid="" onmouseover="alert(1)" x=""
  ...
  data-iframeUrl="http://127.0.0.1:8085/NoSuchPage/bazariframe&id=" onmouseover="alert(1)" x=""
>
  1. Move the mouse over the widgetapp element or otherwise trigger the injected event handler.
  2. The browser executes the injected JavaScript in the YesWiki origin.

<img width="1600" height="838" alt="image" src="https://github.com/user-attachments/assets/de592586-a6ee-48f4-bbde-137ab07aaa71" />

Impact

This is a reflected XSS vulnerability in the Bazar widget handler with very low attacker prerequisites.

The practical access model is:

  • The attacker only needs to send a crafted public URL.
  • The victim does not need to authenticate.
  • The attacker…
Record
GHSA-r5xw-gcgw-hwp5
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-80
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
yeswiki/yeswiki
Packagist
before 4.6.6
4.6.6
yeswiki/yeswiki
Packagist
before 4.6.6, plus listed versions
4.2.3v4.1.0v4.1.1v4.1.2v4.1.3
Show 26 moreShow less
v4.1.4v4.1.5v4.2.0v4.2.1v4.2.2v4.2.4v4.3v4.3.1v4.4.0v4.4.1v4.4.2v4.4.3v4.4.4v4.4.5v4.5.0v4.5.1v4.5.2v4.5.3v4.5.4v4.5.5v4.6.0v4.6.1v4.6.2v4.6.3v4.6.4v4.6.5
4.6.6

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
NucleiYesWiki Bazar Widget - Reflected XSS via 'id' Parameter
PoC in GitHub0xTerror/CVE-2026-52774-YESWIKI-XSS2026-09-05

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, Nuclei, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-52774 is a medium vulnerability (CVSS 6.1) in Yeswiki, published July 9, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.66%, the 51st percentile. Fixed in yeswiki/yeswiki 4.6.6.

References

This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open