最新DEDECMS存SQL注入0day漏洞-又来了

黄袍披身 2012-05-02 12:39:52
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,最暴力却最有效的方式。

  注明:本文给出的临时补丁仅供临时防御,对系统造成轻微影响尚未进行系统测试,具体补丁等需等待官方补丁。
...全文
1042 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ci1699 2012-05-03
  • 打赏
  • 举报
回复
刚有空想去实践一下,发现官方30号修复了这漏洞拉。
他们加了一句正则过滤了,没法玩鸟
$membergroup = preg_repalce("#[^0-9]#", "", $membergroup);

找了两个dede的网站试试,发现他们都是直接删除了那个文件……

一起混吧 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

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


飞人~ 我就复制一下.那是安全公司的修正代码 咔咔
[/Quote]真心不错,苍老师也会感谢你。呵呵。。
黄袍披身 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

我经常用DEDE 有时也被黑
[/Quote]

各种注入,层出不穷啊.
黄袍披身 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

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

飞人~ 我就复制一下.那是安全公司的修正代码 咔咔
niceholinchow 2012-05-02
  • 打赏
  • 举报
回复
我经常用DEDE 有时也被黑
一起混吧 2012-05-02
  • 打赏
  • 举报
回复
phpnewnew 一直在贡献 。辛苦了。替大伙感谢你了,DEDECMS 用户有福了。
helloyou0 2012-05-02
  • 打赏
  • 举报
回复
想看看怎么爆的.....
golmjie 2012-05-02
  • 打赏
  • 举报
回复
dede 补丁就是多!
ted 2012-05-02
  • 打赏
  • 举报
回复
PhpNewnew
(php的穷矮挫)
等 级:
结帖率:100.84%

这个结帖率怎么回事?显示的是-1
dedecms好像漏洞挺多的
xuzuning 2012-05-02
  • 打赏
  • 举报
回复
$dsql->GetOne 显然只取结果集中的第一条记录

SELECT groupname FROM ....
只返回一个字段 groupname
ci1699 2012-05-02
  • 打赏
  • 举报
回复
这个GetOne是怎么样就不清楚拉,得看dede源码。


[Quote=引用 11 楼 的回复:]

引用 10 楼 的回复:

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

以上纯设想,

引用 8 楼 的回复:

设 $membergroup 为未经处理的直接 url 变量
那么
$row = $dsql->GetOne("SELECT grou……
[/Quote]
amani11 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

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

以上纯设想,

引用 8 楼 的回复:

设 $membergroup 为未经处理的直接 url 变量
那么
$row = $dsql->GetOne("SELECT groupname FROM #@__me……
[/Quote]

GetOne就返一个字段一个值吧?
ci1699 2012-05-02
  • 打赏
  • 举报
回复
不是可以union其它表嘛,如果是root权限的话结合mysql的函数就可以爆出文件代码,再爆root密码登录insert php代码输出form上传小马。。。。。。

以上纯设想,

[Quote=引用 8 楼 的回复:]

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

[Quote=引用 6 楼 的回复:]

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

有点杞人忧天了吧?
[/Quote]
xuzuning 2012-05-02
  • 打赏
  • 举报
回复
设 $membergroup 为未经处理的直接 url 变量
那么
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id=0 or 1=1"
只是取到表中数据的第一条数据
这个第一条数据通常就是分类的根,这就是不能构成威胁的原因
foolbirdflyfirst 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

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

有点杞人忧天了吧?
[/Quote]
就妞妞说的要把sql改为

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


有理由相信,dedecms未对$membergroup做int转化,导致sql有可能被注入成类似

$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id=0 or 1=1"

即$membergroup = '0 or 1=1'。
未浏览过其源代码,纯属瞎猜,呵呵。

xuzuning 2012-05-02
  • 打赏
  • 举报
回复
不认为
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");
这个可能产生威胁

有点杞人忧天了吧?

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧