OKlite 2.0.0后台更新压缩包导致Getshell浅析
字数 1290 2025-08-20 18:17:31
OKlite 2.0.0后台压缩包更新漏洞分析与利用
漏洞概述
OKlite CMS 2.0.0版本管理后台存在一个通过压缩包更新功能导致的安全漏洞,攻击者可以通过构造恶意的压缩包文件上传到目标服务器,在服务器解压过程中实现任意文件写入,最终导致Getshell。
影响范围
- 受影响版本:OKlite <= 2.0.0
- 利用条件:需要拥有后台管理员权限
漏洞原理
OKlite后台更新功能允许管理员通过上传ZIP压缩包进行系统升级。系统在处理压缩包时存在以下安全问题:
- 解压过程未对压缩包内容进行安全检查
- 解压后的文件会直接写入网站根目录
- 未对文件类型进行限制
攻击者可构造包含恶意PHP文件的压缩包,上传后系统自动解压,导致任意代码执行。
漏洞分析
关键文件路径
-
更新页面视图文件:
OKLite_2.0.0\framework\view\update_index.html -
更新控制器文件:
OKLite_2.0.0\framework\admin\update_control.php -
表单处理库:
OKLite_2.0.0\framework\libs\form.php -
ZIP更新视图文件:
OKLite_2.0.0\framework\view\update_zip.html -
ZIP处理库:
OKLite_2.0.0\framework\libs\phpzip.php
漏洞触发流程
- 后台访问更新功能页面(
update_index.html) - 选择"压缩包升级"选项,调用
update_control.php中的zip()函数 - 系统显示ZIP上传表单(
update_zip.html) - 上传ZIP文件后,系统调用
phpzip.php进行解压 - 解压过程中未对文件内容进行检查,直接解压到网站根目录
- 如果压缩包中包含PHP文件,则会被解压到可访问的web目录
漏洞利用
利用步骤
-
构造恶意压缩包:
- 创建一个包含PHP后门文件的ZIP压缩包,例如:
shell.zip └── shell.php shell.php内容可以是任意PHP代码,如:<?php @eval($_POST['cmd']);?>
- 创建一个包含PHP后门文件的ZIP压缩包,例如:
-
登录后台:
- 获取管理员权限并登录系统后台
-
上传压缩包:
- 访问系统更新功能(通常路径如
/admin.php?c=update) - 选择"压缩包升级"选项
- 上传构造的
shell.zip文件
- 访问系统更新功能(通常路径如
-
执行升级:
- 点击"开始升级"按钮
- 系统会自动解压ZIP文件到网站根目录
-
验证利用:
- 访问解压后的PHP文件(如
http://target.com/shell.php) - 使用WebShell管理工具(如中国菜刀)连接
- 访问解压后的PHP文件(如
利用截图
-
构造的恶意压缩包结构:
shell.zip └── shell.php -
后台压缩包升级界面:
- 选择"压缩包升级"
- 上传
shell.zip
-
升级完成后,网站根目录出现
shell.php -
使用WebShell工具连接成功
防御措施
-
输入验证:
- 对上传的压缩包内容进行严格检查
- 禁止解压包含PHP等可执行文件
-
权限控制:
- 限制解压目录的写入权限
- 使用临时目录进行解压操作
-
文件类型限制:
- 只允许特定的文件类型被解压
- 对解压后的文件进行内容检查
-
代码修复:
- 在
phpzip.php中添加安全检查逻辑 - 实现白名单机制,只允许特定文件被处理
- 在
-
系统更新:
- 升级到最新版本,官方可能已修复此漏洞
总结
该漏洞展示了CMS系统中文件处理功能可能带来的安全风险。开发人员在实现类似功能时应注意:
- 所有用户输入(包括压缩包内容)都应视为不可信的
- 文件操作应限制在特定目录
- 实现严格的文件类型检查机制
- 最小权限原则应用于所有文件操作
安全审计时应特别关注文件上传、解压、备份恢复等功能点的安全性。