CLTPHP一套基于PHP开发,mysql数据库架构的网站内容管理系统,基础代码是用
thinkphp5的代码开发完成,不管是PC端还是手机端都采用layui自适应的框架来供用户访问网
站,该系统包含许多第三方的模块,数据库在线管理,会员管理,微信接口管理,模板管理,
正因为CLTPHP的多功能,简洁,方便,大气,利于开发,深受各大网站建设公司的喜欢,好
的一面也有不足的一面,SINE安全对其网站进行安全检测的同时,发现该CLTPHP网站存在高
危漏洞,对于漏洞的详情与漏洞修复我们来慢慢剖析。 我们在对其进行网站安全检测中,发现了一处文件任意上传漏洞,不需要任何用户的权限,普
通的访问用户就可以上传任意文件到CLTPHP网站根目录下,导致可上传网站木马文件,包括
php木马,php一句话木马都可以上传。Sine安全公司是一家专注于:网站安全、服务器安全、
网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。 网站漏洞文件位置存在于:app目录下的user文件夹里的UpFiles.php文件 <?php namespace app\user\controller; class UpFiles extends Common { public function upload(){ // 获取上传文件表单字段名 $fileKey = array_keys(request()->file()); // 获取表单上传文件 $file = request()->file($fileKey['0']); // 移动到框架应用根目 录/public/uploads/ 目录下 $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads'); if($info){ $result['code'] = 1; $result['info'] = '图片上传成功!'; $path=str_replace('\\','/',$info->getSaveName()); $result ['url'] = '/uploads/'. $path; return $result; }else{ // 上传失败获取错误信息 $result['code'] =0; $result['info'] = '图片上传失败!'; $result['url'] = ''; return $result; } } } 在上面的这段网站代码里,没有对用户的权限进行判断导致普通的用户都可以访问该表单里
的内容,并直接绕过上传任意文件进去,我们来继续看下这段代码里的move函数,锁定到
think目录下的library文件里的file.php代码: /* 移动文件 */ if ($this->isTest) { rename($this- >filename, $filename); } elseif (!move_uploaded_file($this- >filename, $filename)) { $this->error = '文件上传保存错误!'; return false; } // 返回 File对象实例 $file = new self($filename); $file->setSaveName($saveName); $file->setUploadInfo($this->info); return $file; } /** * 获取保存文件名 * @param string|bool $savename 保存的文件名 默认自动生成 * @return string */ protected function buildSaveName($savename) { if (true === $savename) { // 自动生成文件名 if ($this->rule instanceof \Closure) { 我们可以看到该代码会自动生成文件名,如果我们伪造上传文件的格式,并绕过上传代码
里的文件格式判断就会导致生成我们指定的任意文件。在这个文件中里的validate是默认的
值,当在挑用thinkphp基础代码里的上传功能是,我们看到CLTPHP的配置不当在check函
数判断,没有有效对文件的格式进行检测,可以上传网站脚本木马,并控制整个网站,甚
至是服务器的管理员权限。Sine安全公司是一家专注于:网站安全、服务器安全、网站安全
检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。 网站漏洞的修复 对上传页面进行安全验证,对用户的权限进行判断,对上传文件的格式进行黑名单限制,
或者是白名单安全限制,对上传的文件目录设置无脚本执行权限。
还没有评论,来说两句吧...