eSafe白帽駭客資安網-網絡安全背後的巨人,提供駭客,網站入侵測試,網站被駭,網站漏洞,駭客入侵,資訊安全,入侵,ecshop,wordpress,漏洞修復,木馬清除,資安服務

CLTPHP 網站漏洞修復建議



         CLTPHP一套基於PHP開發,mysql數據庫架構的網站內容管理系統,基礎代碼是用

thinkphp5的代碼開發完成,不管是PC端還是手機端都採用layui自適應的框架
來供用戶訪問網

站,該系統包含許多第三方的模塊,數據庫在線管理,會員管理,
微信接口管理,模板管理,

正因為CLTPHP的多功能,簡潔,方便,大氣,利於開發
,深受各大網站建設公司的喜歡,好

的一面也有不足的一面,eSafe白帽資安網對其網站進
行安全檢測的同時,發現該CLTPHP網站存在高

危漏洞,對於漏洞的詳情與漏洞修復
我們來慢慢剖析。
 
 
我們在對其進行網站安全檢測中,發現了一處文件任意上傳漏洞,不需要任何用戶的權限,普

通的訪問用戶就可以上傳任意文件到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代碼:
 
 /* 移動文件 */
        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白帽資安網公司是一
家專注於:網站安全、主機安全、網站安全

檢測、網站漏洞修復,滲透測試,安全
服務於一體的網絡安全服務提供商。
 
網站漏洞的修復
 
對上傳頁面進行安全驗證,對用戶的權限進行判斷,對上傳文件的格式進行黑名單限制,

或者是白名單安全限制,對上傳的文件目錄設置無腳本執行權限。
分享: