| 标题 | 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 10時18分 (28 日前) |
|---|
| 管理 | 2026-09-16 09時57分 (28 days later) |
|---|
| 状态 | 已接受 |
|---|
| VulDB条目 | 405518 [PbootCMS 直到 3.2.22 Template Rendering ContentController.php decode_string 标题 跨网站脚本] |
|---|
| 积分 | 20 |
|---|