dedecms的/dedecms/member/album_add.php文件中,对输入参数mtypesid未进行int整型转义,导致SQL注入的发生。
打开dedecms/member/album_add.php文件,查找以下代码(大约220行左右)
将上面的代码替换为:
- $description = HtmlReplace($description, -1);//2011.06.30 增加html过滤 (by:织梦的鱼)
(2)dedecms cookies泄漏导致SQL漏洞
- $description = HtmlReplace($description, -1);//2011.06.30 增加html过滤 (by:织梦的鱼)
- $mtypesid = intval($mtypesid);
dedecms的文章发表表单中泄漏了用于防御CSRF的核心cookie,同时在其他核心支付系统也使用了同样的cookie进行验证,黑客可利用泄漏的cookie通过后台验证,进行后台注入。
修复处1:首先找到这个文件/member/article_add.php,83行左右找到代码:
修改为:
- if (empty($dede_fieldshash) || $dede_fieldshash != md5($dede_addonfields.$cfg_cookie_encode))
- if ( empty($dede_fieldshash) || ( $dede_fieldshash != md5($dede_addonfields . $cfg_cookie_encode) && $dede_fieldshash != md5($dede_addonfields . 'anythingelse' . $cfg_cookie_encode)) )
修复处2:文件为/member/inc/inc_archives_functions.php,搜索(大概在239行) :
修改为:
- echo "<input type=\"hidden\" name=\"dede_fieldshash\" value=\"".md5($dede_addonfields.$cfg_cookie_encode)."\" />";
- echo "<input type=\"hidden\" name=\"dede_fieldshash\" value=\"".md5('anythingelse'.$cfg_cookie_encode)."\" />";
(3)DedeCMS v5.7 注册用户任意文件删除漏洞
dedecms前台任意文件删除(需要会员中心),发表文章处,对于编辑文章的时候图片参数处理不当,导致了任意文件删除
打开/member/inc/archives_check_edit.php找到大概第92行的代码:
修改为:
- $litpic =$oldlitpic;
(4)dedecms模版SQL注入漏洞
- $litpic =$oldlitpic; if (strpos( $litpic, '..') !== false || strpos( $litpic, $cfg_user_dir."/{$userid}/" ) === false) exit('not allowed path!');
dedecms的/member/soft_add.php中,对输入模板参数$servermsg1未进行严格过滤,导致攻击者可构造模版闭合标签,实现模版注入进行GETSHELL。
打开文件/member/soft_add.php,搜索(大概在154行):
替换为:
- $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\r\n";
(5)dedecms上传漏洞
- if (preg_match("#}(.*?){/dede:link}{dede:#sim", $servermsg1) != 1) {
- $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\r\n";
- }
dedecms过滤逻辑不严导致上传漏洞。
解决方法:
1、打开include/uploadsafe.inc.php文件,找到第8行或者搜索
替换为:
- $cfg_not_allowall = "php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml";
2、找到第52行或者搜索
- $cfg_not_allowall = "php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml|htm|html";
在其下面添加:
- $image_dd = @getimagesize($$_key);
(6)dedecms任意文件上传漏洞
- if($image_dd == false){ continue; }
dedecms变量覆盖漏洞导致任意文件上传。
修复方法找到/include/dialog/select_soft_post.php文件,在里面找到如下代码
在其上面添加如下代码:
- $fullfilename = $cfg_basedir.$activepath.'/'.$filename;
(7)dedecms留言板注入漏洞。
- if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) {
- ShowMsg("你指定的文件名被系统禁止!",'javascript:;');
- exit();
- }
找到路径如下文件/plus/guestbook/edit.inc.php,在该文件中找到如下内容
在这两行上面插入
- $dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
- ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
(8)dedecms后台文件任意上传漏洞
- $msg = addslashes($msg); //插入这句
- $dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
dedecms早期版本后台存在大量的富文本编辑器,该控件提供了一些文件上传接口,同时dedecms对上传文件的后缀类型未进行严格的限制,这导致了黑客可以上传WEBSHELL,获取网站后台权限
修复方法,主要是文件/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("你指定的文件名被系统禁止!",'java script:;'); exit(); } $fullfilename = $cfg_basedir.$filename;
文章点评