CLTPHP一套基於PHP開發,mysql數據庫架構的網站內容管理系統,基礎代碼是用
thinkphp5的代碼開發完成,不管是PC端還是手機端都採用layui自適應的框架來供用戶訪問網
站,該系統包含許多第三方的模塊,數據庫在線管理,會員管理,微信接口管理,模板管理,
正因為CLTPHP的多功能,簡潔,方便,大氣,利於開發,深受各大網站建設公司的喜歡,好
的一面也有不足的一面,eSafe白帽資安網對其網站進行安全檢測的同時,發現該CLTPHP網站存在高
危漏洞,對於漏洞的詳情與漏洞修復我們來慢慢剖析。
我們在對其進行網站安全檢測中,發現了一處文件任意上傳漏洞,不需要任何用戶的權限,普
通的訪問用戶就可以上傳任意文件到CLTPHP網站根目錄下,導致可上傳網站木馬文件,包括
php木馬,php一句話木馬都可以上傳。eSafe白帽資安網公司是一家專注於:網站安全、主機安全、
網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
通的訪問用戶就可以上傳任意文件到CLTPHP網站根目錄下,導致可上傳網站木馬文件,包括
php木馬,php一句話木馬都可以上傳。eSafe白帽資安網公司是一家專注於:網站安全、主機安全、
網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
網站漏洞文件位置存在於: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函
數判斷,沒有有效對文件的格式進行檢測,可以上傳網站腳本木馬,並控制整個網站,甚
至是主機的管理員權限。eSafe白帽資安網公司是一家專注於:網站安全、主機安全、網站安全
檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
裡的文件格式判斷就會導致生成我們指定的任意文件。在這個文件中裡的validate是默認的
值,當在挑用thinkphp基礎代碼裡的上傳功能是,我們看到CLTPHP的配置不當在check函
數判斷,沒有有效對文件的格式進行檢測,可以上傳網站腳本木馬,並控制整個網站,甚
至是主機的管理員權限。eSafe白帽資安網公司是一家專注於:網站安全、主機安全、網站安全
檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
網站漏洞的修復
對上傳頁面進行安全驗證,對用戶的權限進行判斷,對上傳文件的格式進行黑名單限制,
或者是白名單安全限制,對上傳的文件目錄設置無腳本執行權限。
或者是白名單安全限制,對上傳的文件目錄設置無腳本執行權限。