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

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

缺陷编号:wooyun-2016-0190891

漏洞标题:PHPYUN任意文件上传导致GETSHELL

相关厂商:php云人才系统

漏洞作者: pang0lin

提交时间:2016-03-31 15:20

修复时间:2016-06-29 15:40

公开时间:2016-06-29 15:40

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

简单到你难以想象,只要网站还可以注册就可以GETSHELL,无视GPC,无视WAF。4.1beta版本,其他版本未测

详细说明:

1.在审计PHPYUN的时候一度对PHPYUN的WAF非常无语,但是在大家都痴迷于寻找SQL注入漏洞的时候,确实忽略了一个很简单的上传漏洞。首先定位到漏洞文件wap/member/model/index.class.php

function photo_action(){
if($_POST['submit']){
preg_match('/^(data:\s*image\/(\w+);base64,)/', $_POST['uimage'], $result);
$uimage=str_replace($result[1], '', str_replace('#','+',$_POST['uimage']));
$new_file = time().".".$result[2];
if (!file_exists(DATA_PATH."upload/user/".date('Ymd')."/")){
mkdir(DATA_PATH."upload/user/".date('Ymd')."/");
chmod(DATA_PATH."upload/user/".date('Ymd')."/",0777);
}
$re=file_put_contents(DATA_PATH."upload/user/".date('Ymd')."/".$new_file, base64_decode($uimage));
chmod(DATA_PATH."upload/user/".date('Ymd')."/".$new_file,0777);
if($re){
$user=$this->obj->DB_select_once("resume","`uid`='".$this->uid."'","`photo`,`resume_photo`");
if($user['photo']||$user['resume_photo']){
unlink_pic(APP_PATH.$user['photo']);
unlink_pic(APP_PATH.$user['resume_photo']);
}
$photo="./datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/".date('Ymd')."/".$new_file;
$this->obj->DB_update_all("resume","`resume_photo`='".$photo."',`photo`='".$photo."'","`uid`='".$this->uid."'");
$this->obj->DB_update_all("resume_expect","`photo`='".$photo."'","`uid`='".$this->uid."'");
echo 1;die;
}else{
unlink_pic("../datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/".date('Ymd')."/".$new_file);
echo 2;die;
}
} else{
$user=$this->obj->DB_select_once("resume","`uid`='".$this->uid."'","`photo`");
if($user['photo']==""){
$user['photo']='/'.$this->config['sy_member_icon'];
}
$this->yunset("user",$user);
$this->waptpl('photo');
}
}


2.这里的file_put_contents接收两个参数,两个参数均是来自于$_POST['uimage'],而且还经过了base64_decode的反编码,就可以无视WAF了。首先注册一个普通的用户,随便填一个简历,然后构造payload,如测试代码,就可以在我们的根目录下面生成一个php的一句话webshell。
官网没找到demo,就以官网中的排名第一个的案例http://**.**.**.**/(电商人才网)演示漏洞
参照测试代码,构造payload,你以为最后的时间戳还要爆破么,完全不用,使用burp抓包(不能直接访问,除非你是用手机访问的,因为这里验证了UA头,是电脑会被重定向,但是后面的代码仍然可以执行),访问http://**.**.**.**/wap/member/index.php?c=photo&m=index(这里不post任何数据,就可以直接看到当前的头像,里面有我们传好的webshell)

1.png


http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160330/1459344569.php
3,同样的问题还出现在wap/member/model/com.class.php。

漏洞证明:

1.png


http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160330/1459344569.php
按照管理员大大的要求再提供案例吧,都只传phpinfo,没问题吧
1.http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160331/1459407471.php
2.http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160331/1459407615.php
3.http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160331/1459407983.php
4.http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160331/1459408176.php
5.http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160330/1459344569.php
6.http://**.**.**.**/datahttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/user/20160331/1459408409.php

修复方案:

你们更专业

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2016-03-31 15:36

厂商回复:

感谢提供!

最新状态:

暂无


漏洞评价:

评价

  1. 2016-03-31 15:22 | 玉林嘎 认证白帽子 ( 普通白帽子 | Rank:941 漏洞数:108 )

    ...

  2. 2016-03-31 15:22 | komas ( 普通白帽子 | Rank:107 漏洞数:25 )

    ...膜拜

  3. 2016-03-31 15:24 | 牛肉包子 ( 普通白帽子 | Rank:307 漏洞数:70 | baozisec)

    程序员写错代码了

  4. 2016-03-31 15:25 | answer 认证白帽子 ( 普通白帽子 | Rank:453 漏洞数:54 | 答案)

    ...

  5. 2016-03-31 20:34 | ksss ( 普通白帽子 | Rank:592 漏洞数:89 | 靡不有初,鲜克有终)

  6. 2016-04-01 10:29 | Rainism ( 路人 | Rank:15 漏洞数:4 | hacking for fun)

    ……

  7. 2016-04-01 11:30 | Xser ( 普通白帽子 | Rank:408 漏洞数:92 | JDSec)

    .......

  8. 2016-04-04 13:42 | YOUYU ( 路人 | Rank:7 漏洞数:4 | 不想说)

    .....

  9. 2016-04-05 16:35 | wps2015 ( 普通白帽子 | Rank:654 漏洞数:86 | 不叫一日荒废)

    666

  10. 2016-04-06 13:38 | 从容 ( 普通白帽子 | Rank:415 漏洞数:99 | 哇啦啦啦啦啦 我的宝贝 | Tr3jer@Gmail.c...)

    ......

  11. 2016-04-06 14:55 | 风炫 ( 路人 | Rank:2 漏洞数:6 | 菊花残,满地伤)

    腥风血雨,目测要火

  12. 2016-04-06 17:28 | Xser ( 普通白帽子 | Rank:408 漏洞数:92 | JDSec)

    wap的问题……

  13. 2016-04-22 01:17 | i0nAy ( 路人 | Rank:4 漏洞数:3 | 你渴望力量吗? <不我渴望奶子.>)

    目测要火... 关注 洞主66666666

  14. 2016-05-02 19:22 | 清风づ ( 实习白帽子 | Rank:68 漏洞数:15 | 90后小屌丝~努力学习代码审计的渣渣)

    ...赞

  15. 2016-06-04 21:14 | 小杰哥 ( 普通白帽子 | Rank:251 漏洞数:35 | 我不是 T0n9 和 T0n9@X1a0J1e 的大号!)

    自带waf bypass。

  16. 2016-06-29 15:54 | 美食家L ( 实习白帽子 | Rank:75 漏洞数:10 | http://404.so 安静的坚持自己的原则)

    程序员写错代码了