Description
299Ko's public contact form (plugin/contact/controllers/ContactController.php, home()) sets raw POST field values (name, firstname, email, message) into the page template with no sanitization. The template engine's variable output function (common/Template.php, _show_var()) echoes values with no htmlspecialchars() call, and the sink template (contact.tpl) outputs these values unescaped into an HTML attribute and a textarea. An unauthenticated attacker can submit a payload such as name="><script>alert(document.domain)</script> to achieve reflected XSS against any visitor who submits or is tricked into auto-submitting the form, including a targeted administrator, enabling session token theft.
Published: 2026-08-05
Score: 6.1 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

299Ko’s public contact form accepts user input for name, firstname, email and message but inserts these fields into the page template without escaping. The template’s rendering function outputs the values directly into an HTML attribute and a textarea, allowing an unauthenticated attacker to inject arbitrary script code. A payload such as name=\">\<script>alert(document.domain)</script> will be reflected to the visitor’s browser, permitting session cookie theft or other client‑side attacks. The weakness is a classic reflected XSS scenario (CWE‑79).

Affected Systems

All installations of the 299Ko plugin that include the default public contact form are affected; specific version information is not disclosed. The vulnerability exists wherever the plugin’s ContactController is deployed in its default configuration.

Risk and Exploitability

With a CVSS score of 6.1 the vulnerability is considered of moderate severity. No EPSS score is available, and the issue is not listed in CISA’s KEV catalog, indicating limited publicly known exploitation. An attacker can exploit the flaw remotely over the network by simply submitting the form, making it a high‑risk vulnerability for any attacker capable of delivering a crafted payload to a victim’s browser. The impact largely affects confidentiality and availability of user sessions through token theft.

Generated by OpenCVE AI on August 5, 2026 at 12:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the vendor‑provided patch that sanitizes all input fields before rendering
  • If a patch is unavailable, modify the template engine’s _show_var() function to encode output with htmlspecialchars() or equivalent before echoing
  • Implement a Content‑Security‑Policy that disallows inline scripts and limits script sources

Generated by OpenCVE AI on August 5, 2026 at 12:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 05 Aug 2026 11:15:00 +0000

Type Values Removed Values Added
Description 299Ko's public contact form (plugin/contact/controllers/ContactController.php, home()) sets raw POST field values (name, firstname, email, message) into the page template with no sanitization. The template engine's variable output function (common/Template.php, _show_var()) echoes values with no htmlspecialchars() call, and the sink template (contact.tpl) outputs these values unescaped into an HTML attribute and a textarea. An unauthenticated attacker can submit a payload such as name="><script>alert(document.domain)</script> to achieve reflected XSS against any visitor who submits or is tricked into auto-submitting the form, including a targeted administrator, enabling session token theft.
Title 299Ko: Unauthenticated Reflected XSS in Public Contact Form
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: TuranSec

Published:

Updated: 2026-08-05T13:38:12.986Z

Reserved: 2026-08-05T10:53:53.177Z

Link: CVE-2026-71249

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-05T12:30:12Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')