| 제목 | pbootcmspro PbootCMS <=V3.2.22 Incomplete Denylist to Cross-Site Scripting |
|---|
| 설명 | When creating or editing an article in the admin panel, the `title` field is passed through `escape_string()`, which encodes it into HTML entities using `htmlspecialchars()`, before it is stored in the database. On the frontend, when the content is read, `->decode()` → `decode_string()` decodes the entities back to the original characters, and the result is then output directly in the `default` branch of the template rendering without a second filtering pass through `filter_html()`. Consequently, HTML/event attributes submitted by an attacker, such as `<script>`, are rendered as raw HTML on the article detail page, list page, and homepage, resulting in stored XSS. An attacker only needs the "content creation/modification" permission (a normal editor role is sufficient) to inject persistent scripts that execute arbitrary JavaScript in the browsers of all users visiting the article/list/homepage, enabling theft of cookies, sessions, sensitive backend data, or phishing. This encode→decode→direct output chain is a long-standing design, and the V3.2.x series is presumed to be affected. |
|---|
| 원천 | ⚠️ https://github.com/pbootcmspro/PbootCMS/issues/69 |
|---|
| 사용자 | rockmelodeis (UID 100628) |
|---|
| 제출 | 2026. 08. 19. AM 10:18 (28 날 ago) |
|---|
| 모더레이션 | 2026. 09. 16. AM 09:57 (28 days later) |
|---|
| 상태 | 수락 |
|---|
| VulDB 항목 | 405518 [PbootCMS 까지 3.2.22 Template Rendering ContentController.php decode_string 제목 크로스 사이트 스크립팅] |
|---|
| 포인트들 | 20 |
|---|