CVE-2026-71249
Received Received - Intake

Stored XSS in 299Ko Public Contact Form

Vulnerability report for CVE-2026-71249, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-08-05

Last updated on: 2026-08-05

Assigner: 309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-08-05
Last Modified
2026-08-05
Generated
2026-08-05
AI Q&A
2026-08-05
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
299ko public_contact_form *

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This is a reflected cross-site scripting (XSS) vulnerability in a public contact form of a PHP flat-file CMS. The form directly inserts user-supplied input (name, firstname, email, message) into the page template without sanitization. The template engine outputs these values without escaping HTML special characters, allowing an attacker to inject malicious scripts. For example, submitting a name like ">&lt;script&gt;alert(document.domain)&lt;/script&gt; would execute the script when the page is viewed.

Detection Guidance

Check the plugin/contact/controllers/ContactController.php file for the home() function to see if raw POST fields are directly assigned to template variables without sanitization. Inspect common/Template.php for the _show_var() function to verify if htmlspecialchars() is missing when outputting variables. Examine contact.tpl to confirm if user inputs are output unescaped in HTML attributes or textarea elements.

Impact Analysis

An unauthenticated attacker can trick users or administrators into submitting the form with a malicious payload. This could lead to session token theft, account hijacking, or defacement of the website. Visitors or administrators viewing the form page may have their sessions compromised if they interact with the injected script.

Compliance Impact

This vulnerability could lead to unauthorized access to user data, violating GDPR's data protection requirements. For HIPAA, it may expose protected health information if user data is compromised. Both standards require safeguards against such breaches, and this vulnerability undermines those protections.

Mitigation Strategies

Apply input sanitization to POST fields (name, firstname, email, message) in ContactController.php before assigning them to template variables. Modify _show_var() in common/Template.php to use htmlspecialchars() when outputting variables. Update contact.tpl to escape user inputs in HTML attributes and textarea elements. Consider disabling the contact form temporarily if a patch is unavailable.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-71249. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart