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

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

缺陷编号: WooYun-2014-75852

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

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

漏洞作者: 狗狗侠认证白帽子

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

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

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

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

详细说明:

前面兄弟当天提交当天都拿$ 了

http://**.**.**.**/bugs/wooyun-2014-075782

今晚我也下套代码研究起来。。。。



慢慢道来。。



在\controller\user.class.php中50行处

code 区域
}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()

code 区域
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即可。

例如我本地测试就是对**.**.**.** MD5一次即可。。

修改kod_token的值

2.jpg



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

3.jpg



4.jpg













漏洞证明:

攻击步骤:

1、构造一个不存在的kod_name

1.jpg



2、第二部,自己查下自己的ip即可,或者伪造个client_ip即可。

例如我本地测试就是对**.**.**.** MD5一次即可。。

修改kod_token的值

2.jpg



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

3.jpg



4.jpg

修复方案:

考虑下逻辑。。

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:4

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

厂商回复:

感谢洞主提出。

此处确有不严谨之处,但几乎没有危害;以上所说的模拟登陆后能操控后台完全不可能。
因为即便构造登录成功,也做不了任何操作,所在空权限组没有任何权限。


之前被apache坑了。
期待 通过kod 获得shell,在此悬赏先。
(真的shell的话,麻烦给个自己上传的**.php文件的链接,谢过!)

最新状态:

暂无


漏洞评价:

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

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

评价

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

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

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

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

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

    虚假漏洞

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

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

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

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

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

    @千帆网络工作室 嗯嗯

  7. 2014-09-16 22:53 | 狗狗侠 认证白帽子 ( 普通白帽子 | Rank:518 漏洞数:58 | 我是狗狗侠)
    1

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

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

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

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

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

  10. 2014-09-16 23:14 | 狗狗侠 认证白帽子 ( 普通白帽子 | Rank:518 漏洞数:58 | 我是狗狗侠)
    0

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

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

    哈哈哈

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

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

  13. 2014-09-17 14:19 | Ano_Tom 认证白帽子 ( 普通白帽子 | Rank:474 漏洞数:47 | Talk is cheap.:)
    0

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

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

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

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

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

  16. 2014-12-14 22:04 | Arthur ( 实习白帽子 | Rank:85 漏洞数:35 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)
    1

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

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