某CMS后台远程代码执行漏洞
字数 1307 2025-08-26 22:11:40

某CMS后台远程代码执行漏洞分析与利用

漏洞概述

该漏洞存在于某CMS的后台管理系统中,通过构造恶意用户名并利用日志写入功能,可实现远程代码执行(RCE)。漏洞利用需要后台管理员权限,属于高危漏洞。

漏洞分析

漏洞触发点

漏洞位于/admin/integrate.php文件中,当请求参数act=sync时触发:

// 漏洞触发代码
fwrite($fp, $log); // 将$log内容写入文件

漏洞形成原因

  1. 日志文件写入机制:程序会将修改日志$log变量写入/integrate_' . $_SESSION['code'] .'_log.php文件中
  2. 未过滤的用户输入$log变量由$del_list$rename_list$ignore_list组成,其中$ignore_list来自数据库users表中flag=4user_name字段
  3. 直接执行PHP代码:写入的文件位于web可访问目录,且内容未经过滤,导致任意PHP代码执行

关键变量说明

  • $ignore_list:从users表中获取的flag=4的用户名列表
  • $_SESSION['code']:默认为空,影响最终生成的文件名
  • $log:最终写入文件的内容,包含恶意用户名

漏洞利用步骤

前置条件

  1. 拥有后台管理员权限
  2. 能够访问数据库管理功能或会员整合功能

利用方法一:通过数据库直接修改

  1. 构造恶意用户

    • users表中插入或修改一个用户,设置:
      • user_name为恶意PHP代码,例如:<?php phpinfo(); /*
      • flag字段设置为4
  2. 触发漏洞

    • 访问URL:http://target.com/admin/integrate.php?act=sync
    • 这将把恶意用户名写入日志文件
  3. 访问后门文件

    • 默认生成的文件路径:data/integrate__log.php
    • 访问该文件即可执行注入的PHP代码

利用方法二:通过会员整合功能

  1. 搭建可整合的商城系统

    • 配置一个该CMS允许合并数据的商城程序
    • 在商城程序中创建含有恶意PHP代码的用户
  2. 执行会员整合

    • 使用会员整合功能合并数据
    • 使目标用户出现问题,系统自动将其flag设为4
  3. 触发漏洞

    • 同方法一,访问integrate.php?act=sync

防御措施

  1. 输入过滤

    • user_name等用户输入进行严格过滤,禁止特殊字符
    • 使用htmlspecialchars()等函数转义输出
  2. 日志文件安全

    • 将日志文件存放在web目录之外
    • 对日志文件内容进行编码处理,避免直接执行
  3. 权限控制

    • 加强后台权限验证
    • 限制数据库管理功能的使用
  4. 代码修复

    • 在写入文件前检查内容是否包含PHP代码
    • 使用file_put_contents()替代fwrite()并设置安全参数

漏洞影响

  • 攻击者可执行任意PHP代码
  • 可能导致服务器完全沦陷
  • 可进一步渗透内网
  • 数据泄露风险极高

总结

该漏洞利用链清晰,通过构造恶意用户名并利用日志写入功能实现RCE。虽然需要后台权限,但危害极大。建议开发者严格过滤所有用户输入,并遵循最小权限原则设计系统功能。

某CMS后台远程代码执行漏洞分析与利用 漏洞概述 该漏洞存在于某CMS的后台管理系统中,通过构造恶意用户名并利用日志写入功能,可实现远程代码执行(RCE)。漏洞利用需要后台管理员权限,属于高危漏洞。 漏洞分析 漏洞触发点 漏洞位于 /admin/integrate.php 文件中,当请求参数 act=sync 时触发: 漏洞形成原因 日志文件写入机制 :程序会将修改日志 $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 这将把恶意用户名写入日志文件 访问后门文件 : 默认生成的文件路径: data/integrate__log.php 访问该文件即可执行注入的PHP代码 利用方法二:通过会员整合功能 搭建可整合的商城系统 : 配置一个该CMS允许合并数据的商城程序 在商城程序中创建含有恶意PHP代码的用户 执行会员整合 : 使用会员整合功能合并数据 使目标用户出现问题,系统自动将其 flag 设为 4 触发漏洞 : 同方法一,访问 integrate.php?act=sync 防御措施 输入过滤 : 对 user_name 等用户输入进行严格过滤,禁止特殊字符 使用 htmlspecialchars() 等函数转义输出 日志文件安全 : 将日志文件存放在web目录之外 对日志文件内容进行编码处理,避免直接执行 权限控制 : 加强后台权限验证 限制数据库管理功能的使用 代码修复 : 在写入文件前检查内容是否包含PHP代码 使用 file_put_contents() 替代 fwrite() 并设置安全参数 漏洞影响 攻击者可执行任意PHP代码 可能导致服务器完全沦陷 可进一步渗透内网 数据泄露风险极高 总结 该漏洞利用链清晰,通过构造恶意用户名并利用日志写入功能实现RCE。虽然需要后台权限,但危害极大。建议开发者严格过滤所有用户输入,并遵循最小权限原则设计系统功能。