pb-cms 内容管理系统 list 文件信息泄露漏洞复现

Wayyt  2小时前

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,且响应体中同时出现 usernamepasswordloginIpAddresslastLoginTime 字段,说明用户列表数据已被未认证请求读取。

请求包原文如下(主机地址以示意地址代替):

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. 技术分析记录(内部资料)

最新评论

昵称
邮箱
提交评论