任意檔案上傳漏洞修復

特日根1602813998發表於2018-05-09

 一、/include/dialog/select_soft_post.php檔案,搜尋(大概在72行的樣子)
      $fullfilename = $cfg_basedir.$activepath.'/'.$filename;
      修改為
      if (preg_match('#\.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { ShowMsg("你指定的檔名被系統禁止!",'javascript:;'); exit(); } $fullfilename = $cfg_basedir.$activepath.'/'.$filename;;

  二、後臺檔案任意上傳漏洞

      /dede/media_add.php或者/你的後臺名字/media_add.php

   搜尋$fullfilename = $cfg_basedir.$filename;(大概在69行左右)
      替換成      
      if (preg_match('#\.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { ShowMsg("你指定的檔名被系統禁止!",'javascript:;'); exit(); } $fullfilename = $cfg_basedir.$filename;

     三、 /include/uploadsafe.inc.php (有2個地方:)

  1、搜尋 ${$_key.'_size'} = @filesize($$_key);
      }
      (大概在42,43行左右)
      替換成    
      ${$_key.'_size'} = @filesize($$_key); 
      } $imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp"); if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes)) { $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; } if (!is_array($image_dd)) { exit('Upload filetype not allow !'); } }
      如果修改後出現文章頁面空白頁,請仔細檢視程式碼是否多了或者少了大括號},本檔案44行是空的,沒有程式碼,請注意。

      2、搜尋 $image_dd = @getimagesize($$_key);(大概在53行左右)
      替換成     
      $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; }

     老規矩大紅色地方標記了修改的地方,然後儲存,接著備份原檔案,比如檔名變為uploadsafe.inc.php.16.08.09.bak。然後上傳修改好的檔案即可。

相關文章