Home  >  Article  >  Backend Development  >  最新DEDECMS存SQL注入0day漏洞-又来了,该如何处理

最新DEDECMS存SQL注入0day漏洞-又来了,该如何处理

WBOY
WBOYOriginal
2016-06-13 13:33:17820browse

最新DEDECMS存SQL注入0day漏洞-又来了
4月29日消息:国内安全研究团队“知道创宇”称截获到最新DEDECMS SQL注入0day,DEDECMS官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用简单且dedecms安装之后默认即开启漏洞模块。

  知道创宇给出三种临时解决方案:

  方案一、临时补丁,需要四步

  1. 确保您的magic_quotes_gpc = On

  详细开启方式:打开php安装目录中的php.ini(若您使用的是appserv等集成环境,php.ini可能在系统盘符:\windows\php.ini),搜索magic_quotes_gpc,将其设置为On。

  2.

  /plus/carbuyaction.php 22行附近即

  if($cfg_mb_open == 'N') { ShowMsg("系统关闭了会员功能,因此你无法访问此页面!","javascript:;"); exit(); }

  下面添加一行代码

  $rs =array();

  3.

  在 member/ajax_membergroup.php 33行附近即

  if(empty($membergroup)){ echo "您还没有设置分组!"; exit; }

  下面加入如下代码:

  if(strpos($membergroup,"'")){ echo "SQL注入防护临时补丁,知道创宇安全团队提醒您关注官方补丁!"; exit; }

  4.

  原member/ajax_membergroup.php 36 行附近的

  $row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");

  修改为

  $row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id='{$membergroup}'");

  方案二、以网站管理员身份后台禁用会员功能

  系统 -> 系统基本参数 -> 会员设置 -> 是否开启会员功能 改为(否)

  方案三、若贵站不需要会员功能,可考虑直接重命名或删除存在漏洞的文件 /member/ajax_membergroup.php,最暴力却最有效的方式。

  注明:本文给出的临时补丁仅供临时防御,对系统造成轻微影响尚未进行系统测试,具体补丁等需等待官方补丁。

------解决方案--------------------
phpnewnew 一直在贡献 。辛苦了。替大伙感谢你了,DEDECMS 用户有福了。
------解决方案--------------------
我经常用DEDE 有时也被黑
------解决方案--------------------

探讨

引用:

phpnewnew 一直在贡献 。辛苦了。替大伙感谢你了,DEDECMS 用户有福了。


飞人~ 我就复制一下.那是安全公司的修正代码 咔咔

------解决方案--------------------
不认为
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");
这个可能产生威胁

有点杞人忧天了吧?
------解决方案--------------------
探讨

不认为
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");
这个可能产生威胁

有点杞人忧天了吧?

------解决方案--------------------
设 $membergroup 为未经处理的直接 url 变量
那么
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id=0 or 1=1"
只是取到表中数据的第一条数据
这个第一条数据通常就是分类的根,这就是不能构成威胁的原因
------解决方案--------------------
这样不是{$membergroup}如果是用户可操作的数据那不是可以整形注入了吗

探讨

不认为
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");
这个可能产生威胁

有点杞人忧天了吧?

------解决方案--------------------
不是可以union其它表嘛,如果是root权限的话结合mysql的函数就可以爆出文件代码,再爆root密码登录insert php代码输出form上传小马。。。。。。

以上纯设想,

探讨

设 $membergroup 为未经处理的直接 url 变量
那么
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id=0 or 1=1"
只是取到表中数据的第一条数据
这个第一条数据通常就是分类的根,这就是不能构成威胁的原因

------解决方案--------------------
探讨

不是可以union其它表嘛,如果是root权限的话结合mysql的函数就可以爆出文件代码,再爆root密码登录insert php代码输出form上传小马。。。。。。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn