pb-cms 内容管理系统 list 文件信息泄露漏洞复现
pb-cms 内容管理系统 list 文件信息泄露漏洞复现
0x00 漏洞概述
pb-cms(瀑布内容管理系统)是一款基于 SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 构建的开源内容管理系统,附带权限管理功能,源码托管于 Gitee 平台。
pb-cms v2.0.1 及之前的版本存在权限绕过漏洞。攻击者通过构造特殊的 URL 地址,可以绕过系统的访问控制限制,直接访问后台用户管理接口,读取系统敏感信息。该漏洞对应的 CVSS 评分为 7.5。
0x01 影响范围
- 受影响产品:pb-cms 内容管理系统
- 受影响版本:v2.0.1 及之前的版本
- 漏洞入口:
/user/list后台用户列表接口(需借助路径变形访问),无需任何认证 - 资产识别特征:站点页面中引用
/libs/theme/pblog/js/pb-blog.js脚本资源
0x02 漏洞分析
pb-cms 使用 Apache Shiro 框架进行权限控制:后台管理接口(如用户列表 /user/list)在 Shiro 过滤链中被配置为需要认证,而博客前台路径 /blog/** 处于放行范围。
公开的代码审计分析指出,在 Apache Shiro 1.5.3 之前的版本中,Shiro 与 Spring 控制器对请求路径的解析存在差异:Shiro 按照原始 URI 匹配过滤链规则,而底层 Web 容器和 Spring MVC 在路由时会忽略 URI 中分号及其后的内容,并对 .. 等路径片段做规范化处理。攻击者正是利用这一处理差异,在请求路径中插入 /blog/..;/ 这样的片段:
- Shiro 侧看到的路径以
/blog/开头,落入放行规则,判定请求无需认证; - 容器和 Spring 侧经过规范化后,实际将请求转发至
/user/list用户列表接口。
于是未经登录的攻击者即可直接调用后台用户管理接口。该接口返回的用户列表数据中包含用户名、密码字段、登录 IP 地址(loginIpAddress)、最近登录时间(lastLoginTime)等敏感字段,造成敏感信息泄露。
0x03 利用链与请求包
利用过程为单次请求:向目标发送如下 POST 请求即可读取用户列表数据。
请求中各部分的含义如下:
- 请求路径
/blog/..;/user/list:利用 Shiro 与容器路径解析差异的绕过路径,最终路由到后台用户列表接口; Content-Type: application/x-www-form-urlencoded:表单请求头,与接口的参数接收格式对应;- 请求体
pageNumber=1&pageSize=10:用户列表接口的分页参数,第一页、每页十条。
漏洞利用成功的判定特征为:服务端返回状态码 200,且响应体中同时出现 username、password、loginIpAddress、lastLoginTime 字段,说明用户列表数据已被未认证请求读取。
请求包原文如下(主机地址以示意地址代替):
POST /blog/..;/user/list HTTP/1.1
Host: 192.0.2.10
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
pageNumber=1&pageSize=10满足判定条件的响应为状态码 200 的 JSON 数据,其中包含上述用户敏感字段的内容,攻击者据此获取系统用户信息。
0x04 检测与修复建议
检测方面:
1. 核查公网、办公网边界及第三方托管环境中的 pb-cms 部署,确认相关接口的暴露范围和版本;
2. 检查 Web 访问日志,排查 URI 中包含 ..;/ 变形路径且命中 /user/list 等后台接口的未认证请求;
3. 发现敏感文件访问记录后,立即轮换密码、密钥、会话等泄露凭据。
修复方面:
1. 官方暂未发布该漏洞的修复版本,建议通过项目主页与厂商联系反馈漏洞修复事宜;
2. 暂不能升级时,关闭调试和示例接口,禁止配置文件直接访问,通过 ACL 或 VPN 限制访问来源;
3. 通过防火墙等安全设备设置访问策略,设置白名单访问;
4. 如非必要,禁止公网直接访问该系统。
0x05 参考资料
1. pb-cms 项目主页(Gitee):https://gitee.com/LinZhaoguan/pb-cms
2. JAVA 代码审计 1 · pb-cms(瀑布内容管理系统)(FreeBuf):https://www.freebuf.com/vuls/377983.html
3. PB-CMS v1.0.0 代码审计(先知社区):https://xz.aliyun.com/news/13307
4. JAVA 代码审计之某瀑布内容管理系统(先知社区):https://xz.aliyun.com/news/91551
5. PB-CMS 代码审计学习(公开技术分析):https://y0n3er.github.io/2024/03/PB-CMS%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E5%AD%A6%E4%B9%A0/
6. 技术分析记录(内部资料)

Wayyt 2小时前
最新评论