ljcms的一次审计
字数 1001 2025-08-05 08:17:46

LJCMS安全审计与漏洞分析报告

1. 系统概述

LJCMS是一个内容管理系统,本次审计发现了多个安全漏洞,包括文件上传漏洞、SQL注入漏洞和模板注入漏洞。

2. 已知漏洞分析

2.1 文件上传漏洞

漏洞位置

oa.php中的Popup控制器的upload方法

漏洞详情

  • 使用move_uploaded_file函数处理上传文件
  • 未对文件后缀名进行严格限制
  • 攻击者可上传恶意PHP文件

漏洞利用PoC

POST /oa.php?c=Popup&a=upload HTTP/1.1
Host: 192.168.57.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWlmrYmiGkZv4kYqt

------WebKitFormBoundaryWlmrYmiGkZv4kYqt
Content-Disposition: form-data; name="file"; filename="f.php"
Content-Type: image/gif

<?php phpinfo();?>
------WebKitFormBoundaryWlmrYmiGkZv4kYqt--

修复建议

  • 严格限制上传文件类型
  • 使用白名单机制验证文件扩展名
  • 对上传文件内容进行检查

2.2 SQL注入漏洞

漏洞位置

  • 普通用户权限即可利用
  • 多个位置存在SQL注入风险

漏洞详情

  • 未对用户输入进行充分过滤
  • 直接拼接SQL语句
  • 参数可控导致注入

修复建议

  • 使用预处理语句
  • 实施严格的输入验证
  • 应用最小权限原则

2.3 模板注入漏洞

漏洞位置

  • 管理员控制的方法
  • 模板编辑功能

漏洞详情

  • 使用旧版Smarty模板引擎
  • 禁用了PHP标签但仍存在风险
  • 攻击者可注入恶意模板代码

利用条件

  • 需要管理员权限
  • 通过模板编辑功能注入

修复建议

  • 升级到最新版Smarty
  • 加强模板编辑权限控制
  • 对模板内容进行安全过滤

3. 其他潜在漏洞

3.1 反序列化漏洞

  • action_ajax_dao_article方法可控参数
  • 可利用file_get_contents和参数可控
  • 可尝试PHAR反序列化攻击
  • 目前发现可导致任意文件删除

3.2 内网服务探测

  • 通过可控参数可探测内网服务

4. 审计方法论

  1. 已知漏洞验证:首先检查已公开漏洞是否存在
  2. 代码关键词搜索:如move_uploaded_file、SQL查询拼接等
  3. 权限边界测试:验证不同权限用户能执行的操作
  4. 第三方组件检查:如Smarty模板引擎版本
  5. 危险函数追踪:如file_get_contents、反序列化操作等

5. 防御建议

  1. 输入验证:对所有用户输入进行严格验证
  2. 权限控制:实施最小权限原则
  3. 组件更新:保持所有第三方组件为最新版本
  4. 安全编码:避免直接拼接SQL,使用预处理语句
  5. 文件上传:实施严格的文件类型检查和内容验证
  6. 日志监控:记录所有敏感操作

6. 参考链接

本报告详细记录了LJCMS系统的安全审计过程和发现的主要漏洞,安全团队可根据此报告进行漏洞修复和系统加固。

LJCMS安全审计与漏洞分析报告 1. 系统概述 LJCMS是一个内容管理系统,本次审计发现了多个安全漏洞,包括文件上传漏洞、SQL注入漏洞和模板注入漏洞。 2. 已知漏洞分析 2.1 文件上传漏洞 漏洞位置 oa.php 中的 Popup 控制器的 upload 方法 漏洞详情 使用 move_uploaded_file 函数处理上传文件 未对文件后缀名进行严格限制 攻击者可上传恶意PHP文件 漏洞利用PoC 修复建议 严格限制上传文件类型 使用白名单机制验证文件扩展名 对上传文件内容进行检查 2.2 SQL注入漏洞 漏洞位置 普通用户权限即可利用 多个位置存在SQL注入风险 漏洞详情 未对用户输入进行充分过滤 直接拼接SQL语句 参数可控导致注入 修复建议 使用预处理语句 实施严格的输入验证 应用最小权限原则 2.3 模板注入漏洞 漏洞位置 管理员控制的方法 模板编辑功能 漏洞详情 使用旧版Smarty模板引擎 禁用了PHP标签但仍存在风险 攻击者可注入恶意模板代码 利用条件 需要管理员权限 通过模板编辑功能注入 修复建议 升级到最新版Smarty 加强模板编辑权限控制 对模板内容进行安全过滤 3. 其他潜在漏洞 3.1 反序列化漏洞 action_ajax_dao_article 方法可控参数 可利用 file_get_contents 和参数可控 可尝试PHAR反序列化攻击 目前发现可导致任意文件删除 3.2 内网服务探测 通过可控参数可探测内网服务 4. 审计方法论 已知漏洞验证 :首先检查已公开漏洞是否存在 代码关键词搜索 :如 move_uploaded_file 、SQL查询拼接等 权限边界测试 :验证不同权限用户能执行的操作 第三方组件检查 :如Smarty模板引擎版本 危险函数追踪 :如 file_get_contents 、反序列化操作等 5. 防御建议 输入验证 :对所有用户输入进行严格验证 权限控制 :实施最小权限原则 组件更新 :保持所有第三方组件为最新版本 安全编码 :避免直接拼接SQL,使用预处理语句 文件上传 :实施严格的文件类型检查和内容验证 日志监控 :记录所有敏感操作 6. 参考链接 之前的安全分析文章 CNVD漏洞公告 本报告详细记录了LJCMS系统的安全审计过程和发现的主要漏洞,安全团队可根据此报告进行漏洞修复和系统加固。