某CMS后台远程代码执行漏洞
字数 1307 2025-08-26 22:11:40
某CMS后台远程代码执行漏洞分析与利用
漏洞概述
该漏洞存在于某CMS的后台管理系统中,通过构造恶意用户名并利用日志写入功能,可实现远程代码执行(RCE)。漏洞利用需要后台管理员权限,属于高危漏洞。
漏洞分析
漏洞触发点
漏洞位于/admin/integrate.php文件中,当请求参数act=sync时触发:
// 漏洞触发代码
fwrite($fp, $log); // 将$log内容写入文件
漏洞形成原因
- 日志文件写入机制:程序会将修改日志
$log变量写入/integrate_' . $_SESSION['code'] .'_log.php文件中 - 未过滤的用户输入:
$log变量由$del_list、$rename_list和$ignore_list组成,其中$ignore_list来自数据库users表中flag=4的user_name字段 - 直接执行PHP代码:写入的文件位于web可访问目录,且内容未经过滤,导致任意PHP代码执行
关键变量说明
$ignore_list:从users表中获取的flag=4的用户名列表$_SESSION['code']:默认为空,影响最终生成的文件名$log:最终写入文件的内容,包含恶意用户名
漏洞利用步骤
前置条件
- 拥有后台管理员权限
- 能够访问数据库管理功能或会员整合功能
利用方法一:通过数据库直接修改
-
构造恶意用户:
- 在
users表中插入或修改一个用户,设置:user_name为恶意PHP代码,例如:<?php phpinfo(); /*flag字段设置为4
- 在
-
触发漏洞:
- 访问URL:
http://target.com/admin/integrate.php?act=sync - 这将把恶意用户名写入日志文件
- 访问URL:
-
访问后门文件:
- 默认生成的文件路径:
data/integrate__log.php - 访问该文件即可执行注入的PHP代码
- 默认生成的文件路径:
利用方法二:通过会员整合功能
-
搭建可整合的商城系统:
- 配置一个该CMS允许合并数据的商城程序
- 在商城程序中创建含有恶意PHP代码的用户
-
执行会员整合:
- 使用会员整合功能合并数据
- 使目标用户出现问题,系统自动将其
flag设为4
-
触发漏洞:
- 同方法一,访问
integrate.php?act=sync
- 同方法一,访问
防御措施
-
输入过滤:
- 对
user_name等用户输入进行严格过滤,禁止特殊字符 - 使用
htmlspecialchars()等函数转义输出
- 对
-
日志文件安全:
- 将日志文件存放在web目录之外
- 对日志文件内容进行编码处理,避免直接执行
-
权限控制:
- 加强后台权限验证
- 限制数据库管理功能的使用
-
代码修复:
- 在写入文件前检查内容是否包含PHP代码
- 使用
file_put_contents()替代fwrite()并设置安全参数
漏洞影响
- 攻击者可执行任意PHP代码
- 可能导致服务器完全沦陷
- 可进一步渗透内网
- 数据泄露风险极高
总结
该漏洞利用链清晰,通过构造恶意用户名并利用日志写入功能实现RCE。虽然需要后台权限,但危害极大。建议开发者严格过滤所有用户输入,并遵循最小权限原则设计系统功能。