CLTPHP一套基于PHP开发,mysql数据库架构的网站内容管理系统,基础代码是用
thinkphp5的代码开发完成,不管是PC端还是手机端都采用layui自适应的框架来供用户访问网
站,该系统包含许多第三方的模块,数据库在线管理,会员管理,微信接口管理,模板管理,
正因为CLTPHP的多功能,简洁,方便,大气,利于开发,深受各大网站建设公司的喜欢,好
的一面也有不足的一面,SINE安全对其网站进行安全检测的同时,发现该CLTPHP网站存在高
危漏洞,对于漏洞的详情与漏洞修复我们来慢慢剖析。
我们在对其进行网站安全检测中,发现了一处文件任意上传漏洞,不需要任何用户的权限,普
通的访问用户就可以上传任意文件到CLTPHP网站根目录下,导致可上传网站木马文件,包括
php木马,php一句话木马都可以上传。Sine安全公司是一家专注于:网站安全、服务器安全、
网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
通的访问用户就可以上传任意文件到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代码:
的内容,并直接绕过上传任意文件进去,我们来继续看下这段代码里的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安全公司是一家专注于:网站安全、服务器安全、网站安全
检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
里的文件格式判断就会导致生成我们指定的任意文件。在这个文件中里的validate是默认的
值,当在挑用thinkphp基础代码里的上传功能是,我们看到CLTPHP的配置不当在check函
数判断,没有有效对文件的格式进行检测,可以上传网站脚本木马,并控制整个网站,甚
至是服务器的管理员权限。Sine安全公司是一家专注于:网站安全、服务器安全、网站安全
检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
网站漏洞的修复
对上传页面进行安全验证,对用户的权限进行判断,对上传文件的格式进行黑名单限制,
或者是白名单安全限制,对上传的文件目录设置无脚本执行权限。
或者是白名单安全限制,对上传的文件目录设置无脚本执行权限。