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

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

缺陷编号:wooyun-2014-075852

漏洞标题:芒果云KODExlporer设计缺陷导致随意登陆后台

相关厂商:千帆网络工作室

漏洞作者: 狗狗侠

提交时间:2014-09-15 13:57

修复时间:2014-12-14 13:58

公开时间:2014-12-14 13:58

漏洞类型:非授权访问/权限绕过

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-15: 细节已通知厂商并且等待厂商处理中
2014-09-15: 厂商已经确认,细节仅向厂商公开
2014-09-18: 细节向第三方安全合作伙伴开放
2014-11-09: 细节向核心白帽子及相关领域专家公开
2014-11-19: 细节向普通白帽子公开
2014-11-29: 细节向实习白帽子公开
2014-12-14: 细节向公众公开

简要描述:

详细说明:

前面兄弟当天提交当天都拿$ 了
WooYun: 芒果云KODExlporer设计缺陷任意代码执行(四)(官网演示已shell)
今晚我也下套代码研究起来。。。。
慢慢道来。。
在\controller\user.class.php中50行处

}else if(isset($_COOKIE['kod_name']) && isset($_COOKIE['kod_token'])){
$member = new fileCache($this->config['system_file']['member']);
$user = $member->get($_COOKIE['kod_name']);//echo md5($user['password'].get_client_ip());exit();
if(md5($user['password'].get_client_ip()) == $_COOKIE['kod_token']){ //验证出问题的地方
session_start();//re start
$_SESSION['kod_login'] = true;
$_SESSION['kod_user']= $user;
setcookie('kod_name', $_COOKIE['kod_name'], time()+3600*24*365);
setcookie('kod_token',$_COOKIE['kod_token'],time()+3600*24*365); //密码的MD5值再次md5
header('location:'.get_url());
exit;
}
}


其中可以分析下其中逻辑,
当存在以下2个cookie($_COOKIE['kod_name'] $_COOKIE['kod_token'])变量执行下面语句
第二部:
$user = $member->get($_COOKIE['kod_name']);这里的kod_name的cookie是我们能控制的,当我们kod_name构造好不存在的情况,例如$_COOKIE['kod_name']='DDDDSFADSFAS$#@!#$'这样不存在的情况,其中$user就false了。
看后面的语句
if(md5($user['password'].get_client_ip()) == $_COOKIE['kod_token'])
这里验证是不是弱爆了?
前面控制好kod_name导致$user不存在。则整个整个条件判断就是我们可以控制的了
我们只要将get_client_ip() md5就行了。
我们看看get_client_ip()

function get_client_ip($b_ip = true){
$arr_ip_header = array(
"HTTP_CLIENT_IP",
"HTTP_X_FORWARDED_FOR",
"REMOTE_ADDR",
"HTTP_CDN_SRC_IP",
"HTTP_PROXY_CLIENT_IP",
"HTTP_WL_PROXY_CLIENT_IP"
);
$client_ip = 'unknown';
foreach ($arr_ip_header as $key) {
if (!empty($_SERVER[$key]) && strtolower($_SERVER[$key]) != "unknown") {
$client_ip = $_SERVER[$key];
break;
}
}
if ($pos = strpos($client_ip,',')){
$client_ip = substr($client_ip,$pos+1);
}
return $client_ip;
}


这里也是可控的。。。顾思路就来了。直接登录后台
攻击步骤:
1、构造一个不存在的kod_name

1.jpg


2、第二部,自己查下自己的ip即可,或者伪造个client_ip即可。
例如我本地测试就是对127.0.0.1 MD5一次即可。。
修改kod_token的值

2.jpg


3、访问后台地址,即可登录后台了。随意上传文件,控制整个后台

3.jpg


4.jpg



漏洞证明:

攻击步骤:
1、构造一个不存在的kod_name

1.jpg


2、第二部,自己查下自己的ip即可,或者伪造个client_ip即可。
例如我本地测试就是对127.0.0.1 MD5一次即可。。
修改kod_token的值

2.jpg


3、访问后台地址,即可登录后台了。随意上传文件,控制整个后台

3.jpg


4.jpg

修复方案:

考虑下逻辑。。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:4

确认时间:2014-09-15 18:05

厂商回复:

感谢洞主提出。
此处确有不严谨之处,但几乎没有危害;以上所说的模拟登陆后能操控后台完全不可能。
因为即便构造登录成功,也做不了任何操作,所在空权限组没有任何权限。
之前被apache坑了。
期待 通过kod 获得shell,在此悬赏先。
(真的shell的话,麻烦给个自己上传的**.php文件的链接,谢过!)

最新状态:

暂无


漏洞评价:

评论

  1. 2014-09-15 17:24 | 小川 认证白帽子 ( 核心白帽子 | Rank:1344 漏洞数:216 | 一个致力要将乌云变成搞笑论坛的男人)

    有一个厂商将要倒下,大神轻点

  2. 2014-09-15 17:57 | jeffreys125 ( 实习白帽子 | Rank:63 漏洞数:14 | 懒人。。)

    猪猪侠,狗狗侠,还有猫猫侠,牛牛侠什么的么。、、、、、、

  3. 2014-09-15 18:07 | 千帆网络工作室(乌云厂商)

    虚假漏洞

  4. 2014-09-15 19:35 | Bird ( 实习白帽子 | Rank:60 漏洞数:25 | Stay hungry. Stay foolish.)

    @千帆网络工作室 我每次提交的都是货真价实的- - 对吧~ 可为啥就是求高那么难 - -

  5. 2014-09-15 21:53 | 千帆网络工作室(乌云厂商)

    @Bird 额,可能没怎么关注评分...下次注意点。

  6. 2014-09-16 09:14 | Bird ( 实习白帽子 | Rank:60 漏洞数:25 | Stay hungry. Stay foolish.)

    @千帆网络工作室 嗯嗯

  7. 2014-09-16 22:53 | 狗狗侠 ( 普通白帽子 | Rank:497 漏洞数:55 | 我是狗狗侠)

    @千帆网络工作室 你挑衅??? 你认为没shell???? 给你放个shell吧! http://demo.kalcaddle.com/data/User/demo/home/fucka.php别认为你这个破系统还没漏洞。。。等着别人一步步爆吧!

  8. 2014-09-16 22:58 | 狗狗侠 ( 普通白帽子 | Rank:497 漏洞数:55 | 我是狗狗侠)

    @千帆网络工作室 别说虚假漏洞。。。。这个是远程代码执行。。。大哥....等乌云发布吧!。。。

  9. 2014-09-16 23:05 | jeffreys125 ( 实习白帽子 | Rank:63 漏洞数:14 | 懒人。。)

    @千帆网络工作室 哈哈@狗狗侠很生气~后果很严重。。。。webshell都有了~~

  10. 2014-09-16 23:14 | 狗狗侠 ( 普通白帽子 | Rank:497 漏洞数:55 | 我是狗狗侠)

    @jeffreys125 只是看到这厂商很来火。。。还悬赏。。。shell已经给你了,赏在哪?@千帆网络工作室

  11. 2014-09-16 23:38 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    哈哈哈

  12. 2014-09-17 00:23 | Bird ( 实习白帽子 | Rank:60 漏洞数:25 | Stay hungry. Stay foolish.)

    @狗狗侠 狗哥消消气~ 一个开源厂商也不容易。 国产的php文件管理能做成这样也是值得庆幸的。虽然安全性还有问题。

  13. 2014-09-17 14:19 | Ano_Tom ( 普通白帽子 | Rank:368 漏洞数:40 | Talk is cheap.:)

    不是每一个厂商都了解安全、了解白帽子,这需要过程。对于不太懂的,是否应该稍微包容。以下摘自官网http://kalcaddle.com/about.html谈一下命运这是一个互联网的时代,信息化正侵袭各行各业,接下来人类开始真正步入大繁荣的时代,如同《黑客帝国》那般,世界创造了我们,我们又创造了另一个世界,换一种介质让信息更高度的流通,智慧本身朝着一个完美的方向演化,然后我们退出游戏。如若 失控,也算是自己的命运吧。这个世界,没有永恒的东西,没有什么东西是一成不变的,唯一永恒的就是这种变化。如果技术,或者某个作品也有生命有情感的话。那么,我们会更好的理解他们存在的意义与价值。产品,总是伴随着需求的诞生而诞生,随着科技进步需求不再而消亡。而技术,是随着产品的细节,或优化,或使之易用性,开发成本等等的提高而一代代的变革。如果产品算是一个完整的个体的话,那么技术就是一个个可以复用的思维零件。正因为各种技术、设计思想、算法的存在,而使得产品的个体一个个茁壮成长,在他有限的生命周期里,发挥最大的价值。每个作品都会有自己的命运。或经久不衰,或英年早逝。不管他陪伴过你多少个孤独的日日夜夜。时代的变迁,科技的进步。当人们已经用不到他的时候,那么我们要做的只能是最后的留念。作为产品或者技术本身,要做的或许就是“放下吧”……把下一代,交给正在成长的那些‘人’吧!敬畏这种豁达。献一句悼词:它轻轻地走了,真如其轻轻地走了,不带走一滴眼泪。但是,它改变了世界,人类进程中,因为有了它而才有现在这个阶段的美好……永远朝前看,接受新的事物,相信这一点,总是没错的。

  14. 2014-09-17 15:44 | Bird ( 实习白帽子 | Rank:60 漏洞数:25 | Stay hungry. Stay foolish.)

    @Ano_Tom 每一个做开源的人都是发自于对代码的热爱,对让世界变得更美好的愿景。乌云上做开发的人不多,大约也难以理解。开源,特别是在中国是很难做的,而且这个管理器真的很优秀。安全问题慢慢改善是有必要的,但我们也应该保持一下对非营利开发者的宽容和尊重。

  15. 2014-09-17 16:00 | 千帆网络工作室(乌云厂商)

    @Ano_Tom @Bird 谢谢支持,尽量让产品更安全可靠是我的责任,在此也感谢狗狗侠 的认真执着。

  16. 2014-12-14 22:04 | Arthur ( 实习白帽子 | Rank:77 漏洞数:33 | USA,I am coming!!!!!)

    @千帆网络工作室 好有态度的厂商!~~大赞!!