后台文件任意上傳漏洞 /dede/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("你指定的文件名被系統禁止!",'java script:;'); exit(); } $fullfilename = $cfg_basedir.$filename;
任意文件上傳漏洞解 /include/dialog/select_soft_post.php決辦法(大概在71行左右)
$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("你指定的文件名被系統禁止!",'java script:;'); exit(); }
$fullfilename = $cfg_basedir.$activepath.'/'.$filename;
全局變量覆蓋漏洞,文件/include/common.inc.php (大概在101行左右)
foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); }
換為:
foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) { if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) ){ exit('Request var not allow!'); } ${$_k} = _RunMagicQuotes($_v); } }
SESSION變量覆蓋導致SQL注入,文件/include/common.inc.php (大概在68行左右)
if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) )
換為:
if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) )
dedecms支付模塊注入漏洞,/include/payment/alipay.php文件中存在SQL注入漏洞,(大約在136行) /* 取得訂單號 */
$order_sn = trim($_GET['out_trade_no']);
改為:
$order_sn = trim(addslashes($_GET['out_trade_no']));
dedecms留言板注入漏洞之 /plus/guestbook/edit.inc.php (大概在55行左右)
1 $dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
改為:
1 $msg = addslashes($msg); 2 $dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
dede上傳漏洞 /include/uploadsafe.inc.php (大概在 42行 和 53行 2個地方)
${$_key.'_size'} = @filesize($$_key);
42行的地方,改為:
${$_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 !'); }
53行地方的
$image_dd = @getimagesize($$_key);
改為:
$image_dd = @getimagesize($$_key); if($image_dd == false){ continue; }