LMXCMS 任意文件删除到重装系统 getshell 组合拳学习
字数 1045 2025-08-29 08:30:24

LMXCMS 任意文件删除到重装系统 getshell 组合拳教学文档

漏洞概述

本教学文档详细分析LMXCMS系统中存在的安全漏洞组合,通过三个步骤实现从任意文件删除到最终获取系统shell权限的攻击链:

  1. 任意文件删除漏洞
  2. 重装系统限制突破
  3. 配置文件写入导致命令执行

环境搭建要求

  • PHP版本:必须低于5.6(建议尽可能调低PHP版本)
  • 安装目录:/install/c/install(安装完成后必须删除)
  • 安装完成后需在后台首页删除安装目录

漏洞详细分析

第一步:任意文件删除漏洞

漏洞位置:后台数据备份恢复功能

漏洞分析

  1. 后台提供数据备份和恢复功能
  2. 在恢复数据部分存在文件删除操作
  3. 代码直接获取文件名参数,未进行目录限制检查

攻击步骤

  1. 构造恶意文件名参数,利用目录穿越技术
  2. 示例payload:../../install/install.lock(删除安装锁定文件)

关键代码

// 直接获取文件名并删除,无目录限制
$filename = $_GET['filename'];
unlink($filename);

第二步:突破重装系统限制

漏洞原理

  • 系统通过install.lock文件判断是否已安装
  • 删除该文件后可绕过安装限制

代码分析

  1. 每次访问安装界面会调用构造函数
  2. 构造函数检查install.lock文件是否存在
  3. 文件存在则弹出警告阻止再次安装

攻击利用

  1. 通过第一步漏洞删除install.lock文件
  2. 再次访问安装页面即可重新安装系统

第三步:控制文件内容getshell

漏洞位置:系统安装过程中的配置文件写入

攻击步骤

  1. 在安装数据库步骤构造恶意payload
  2. 注意:数据库名必须以_结尾(系统限制)
  3. 示例payload:test';phpinfo();//_

代码分析

  1. 定位到index_4方法中的updateConf方法
  2. 用户输入未经充分过滤直接写入配置文件
  3. 写入内容被包含在PHP配置文件中导致代码执行

关键代码

function updateConf($data) {
    $content = "<?php\nreturn ".var_export($data, true).";\n?>";
    file_put_contents('config.php', $content);
}

完整攻击链

  1. 利用后台任意文件删除漏洞删除install.lock
  2. 重新访问安装页面绕过安装限制
  3. 在安装过程中构造恶意数据库名
  4. 恶意代码被写入配置文件
  5. 访问包含恶意代码的配置文件执行任意命令

防御措施

  1. 对所有文件操作进行严格的路径检查和过滤
  2. 安装完成后彻底删除安装目录
  3. 对写入配置文件的内容进行严格过滤和转义
  4. 使用最新版本的PHP环境
  5. 实施最小权限原则,限制Web服务器用户权限

免责声明

本教学文档仅供安全研究和学习使用,任何未经授权的攻击行为都是非法的。使用本文所述技术产生的任何后果由使用者自行承担。

LMXCMS 任意文件删除到重装系统 getshell 组合拳教学文档 漏洞概述 本教学文档详细分析LMXCMS系统中存在的安全漏洞组合,通过三个步骤实现从任意文件删除到最终获取系统shell权限的攻击链: 任意文件删除漏洞 重装系统限制突破 配置文件写入导致命令执行 环境搭建要求 PHP版本:必须低于5.6(建议尽可能调低PHP版本) 安装目录: /install 和 /c/install (安装完成后必须删除) 安装完成后需在后台首页删除安装目录 漏洞详细分析 第一步:任意文件删除漏洞 漏洞位置 :后台数据备份恢复功能 漏洞分析 : 后台提供数据备份和恢复功能 在恢复数据部分存在文件删除操作 代码直接获取文件名参数,未进行目录限制检查 攻击步骤 : 构造恶意文件名参数,利用目录穿越技术 示例payload: ../../install/install.lock (删除安装锁定文件) 关键代码 : 第二步:突破重装系统限制 漏洞原理 : 系统通过 install.lock 文件判断是否已安装 删除该文件后可绕过安装限制 代码分析 : 每次访问安装界面会调用构造函数 构造函数检查 install.lock 文件是否存在 文件存在则弹出警告阻止再次安装 攻击利用 : 通过第一步漏洞删除 install.lock 文件 再次访问安装页面即可重新安装系统 第三步:控制文件内容getshell 漏洞位置 :系统安装过程中的配置文件写入 攻击步骤 : 在安装数据库步骤构造恶意payload 注意:数据库名必须以 _ 结尾(系统限制) 示例payload: test';phpinfo();//_ 代码分析 : 定位到 index_4 方法中的 updateConf 方法 用户输入未经充分过滤直接写入配置文件 写入内容被包含在PHP配置文件中导致代码执行 关键代码 : 完整攻击链 利用后台任意文件删除漏洞删除 install.lock 重新访问安装页面绕过安装限制 在安装过程中构造恶意数据库名 恶意代码被写入配置文件 访问包含恶意代码的配置文件执行任意命令 防御措施 对所有文件操作进行严格的路径检查和过滤 安装完成后彻底删除安装目录 对写入配置文件的内容进行严格过滤和转义 使用最新版本的PHP环境 实施最小权限原则,限制Web服务器用户权限 免责声明 本教学文档仅供安全研究和学习使用,任何未经授权的攻击行为都是非法的。使用本文所述技术产生的任何后果由使用者自行承担。