### 0x01 前言 审计该CMS的缘起于先知一篇文章,加上公司大佬说应该会有漏洞,故决定测一下。 源码下载:http://down.chinaz.com/soft/33130.htm 环境:phpstudy,php5.6,Windows ### 0x02 审计过程 ### 0x02_1 任意执行SQL语句 由于先知那篇文章发现的漏洞是删除数据库备份文件时没有进行严谨的过滤,导致任意文件被删除,那么我就来看看备份数据库会不会出现问题。  首先备份一个表看看传入的参数有哪些!  数据备份过程中,对数据库进行操作对主要步骤如下图: 主要逻辑是判断需要备份的表是否存在,如果存在,则将表名带入backupTable这个函数,而表名是可控的!  /src/application/backup/admin/BackupController.php的152-170行代码 跟进backupTable这个函数发现表名没有进行过滤处理,直接带入sql语句执行.  /src/service/backup/srv/PwBackupService.php的210-222行代码 POC:  效果:  ### 尝试getshell(前提mysql数据库开启secure-file-priv) POC:  效果: 
### 0x01 前言 审计该CMS的缘起于先知一篇文章,加上公司大佬说应该会有漏洞,故决定测一下。 源码下载:http://down.chinaz.com/soft/33130.htm 环境:phpstudy,php5.6,Windows ### 0x02 审计过程 ### 0x02_1 任意执行SQL语句 由于先知那篇文章发现的漏洞是删除数据库备份文件时没有进行严谨的过滤,导致任意文件被删除,那么我就来看看备份数据库会不会出现问题。  首先备份一个表看看传入的参数有哪些!  数据备份过程中,对数据库进行操作对主要步骤如下图: 主要逻辑是判断需要备份的表是否存在,如果存在,则将表名带入backupTable这个函数,而表名是可控的!  /src/application/backup/admin/BackupController.php的152-170行代码 跟进backupTable这个函数发现表名没有进行过滤处理,直接带入sql语句执行.  /src/service/backup/srv/PwBackupService.php的210-222行代码 POC:  效果:  ### 尝试getshell(前提mysql数据库开启secure-file-priv) POC:  效果: 