对Java JFinal_cms的一次审计过程
字数 1506 2025-08-25 22:58:20
JFinal CMS 安全审计教学文档
环境搭建
源码获取
- GitHub: JFinal CMS 源码
- Gitee: JFinal CMS 源码
数据库配置
- 修改
sql/jfinal_cms_v4.sql文件,在开头添加:create database jfinal_cms; use jfinal_cms; - 使用 Navicat 导入 SQL 文件或 MySQL 命令行执行:
source /path/to/jfinal_cms_v4.sql
开发环境配置
- 使用 IntelliJ IDEA 打开项目
- IDEA 会自动加载 Maven 依赖
- 配置 Tomcat 运行环境
技术架构分析
主要技术组件
- Web框架: JFinal
- 模板引擎: Beetl
- 数据库: MySQL
- 前端框架: Bootstrap
项目结构
- 后台管理模块:
com.jflyfox.modules.admin - 用户控制器:
AdminController(路由为/admin) - 模板引擎配置:
com.jflyfox.component.config.BaseConfig
安全漏洞审计
XSS漏洞
漏洞1: 用户注册XSS
- 位置: 用户注册表单
- 绕过方法:
- 前端验证可通过抓包绕过
- 后端
RegistController#save方法缺少严格过滤
- 利用场景: 管理员查看用户列表时触发
漏洞2: 用户信息修改XSS
- 位置: 用户个人信息设置
- 后端代码:
PersonController#save - 漏洞原因: 直接调用
model.update无过滤 - 利用场景: 文章评论处触发
漏洞3: 前端XSS过滤绕过
- 位置: 文章评论框
- 过滤机制:
JFlyFoxUils#delScriptTag: 删除script/style标签commons-lang的escapeHtml方法
- 绕过方法:
- 利用HTML实体名称漏洞
- 使用Unicode编码
- HTML注释或属性漏洞
SSTI漏洞 (Beetl模板注入)
模板引擎配置
- 配置文件:
/org/beetl/core/beetl-default.properties - 关键配置:
DELIMITER_PLACEHOLDER_START=${ DELIMITER_PLACEHOLDER_END=} DELIMITER_STATEMENT_START=<% DELIMITER_STATEMENT_END=%> TEMPLATE_CHARSET=UTF-8 NATIVE_SECUARTY_MANAGER=org.beetl.core.DefaultNativeSecurityManager
安全限制
- 默认禁止调用
java.lang.Runtime,Process,ProcessBuilder,System - 安全管理器:
DefaultNativeSecurityManager
漏洞利用
- 利用点: 后台模板管理功能
- Payload构造:
${@java.lang.Class.forName("java.lang.Runtime").getMethod("exec", @java.lang.Class.forName("java.lang.String")).invoke( @java.lang.Class.forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null),"calc")} - 绕过方法: 使用Java反射机制绕过安全管理器限制
SQL注入漏洞
漏洞位置
- 后台素材管理:
ImageShowController#list - 漏洞原因: 直接拼接
orderBy参数到SQL语句
利用方法
- Payload示例:
updatexml(1,concat(0x7e,(SELECT user()),0x7e),1) - 影响: MySQL数据库的order by注入
防御建议
XSS防御
- 前后端统一验证
- 使用成熟的XSS过滤库
- 对用户输入进行HTML实体编码
SSTI防御
- 限制模板编辑权限
- 加强安全管理器配置
- 禁用危险Java类调用
SQL注入防御
- 全面使用预编译语句
- 避免SQL字符串拼接
- 使用ORM框架的安全查询方法
审计方法论
- 熟悉项目结构: 了解核心组件和架构
- 入口点分析: 从后台管理等高权限区域开始
- 数据流追踪: 从用户输入到最终输出的完整路径
- 黑盒+白盒结合: 功能测试与代码审计互补
- 框架特性研究: 深入理解JFinal和Beetl的工作机制
参考资源
- Beetl官方文档: https://www.kancloud.cn/xiandafu/beetl3_guide
- JFinal官方文档: http://www.jfinal.com