dedecms安全漏洞大全
后台文件任意上传漏洞 /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; }
作者:青茶
免责声明:文章、笔记等仅供分享、探讨、参考等学习之用,因此造成的任何后果概不负责。(如有错误、疏忽等问题,欢迎指正、讨论,谢谢)
本文版权归作者和博客园共有,欢迎转载,但请务必在文章页面明显位置给出原文连接,谢谢配合。