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

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

缺陷编号: WooYun-2014-69368

漏洞标题: Phpyun设计缺陷致任意文件删除可致重装getshell或注入

相关厂商: php云人才系统

漏洞作者: ′雨。认证白帽子

提交时间: 2014-07-23 10:31

公开时间: 2014-10-21 10:32

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

设计缺陷可致任意文件删除 删除lock可直接进行重装直接达到getshell。
或者删除某文件也可以来注入了。
也可导致破坏sql语句。
________________________________________________________________________

P.S.又是1点多了,明天又无法认真上课了。 2014年7月23日 01:30:01

新的一天快乐。

详细说明:

依旧官网下的最新版。



在model/ajax.class.php中



code 区域
function delupload_action(){
if(!$this->uid && !$this->username && $_COOKIE["usertype"]!=2){
echo 0;die;
}else{
$dir=$_POST[str][0];

$isuser = $this->obj->DB_select_once("company_show","`picurl`='$dir'");
if($isuser['uid']==$this->uid)
{
echo @unlink(".".$dir);
}else{
echo 0;die;
}
}
}





0x01 破坏语句执行



code 区域
$dir=$_POST[str][0];

$isuser = $this->obj->DB_select_once("company_show","`picurl`='$dir'");





这里可以看到$dir 如果这时候我们提交的是一个字符串的话 [0] 就成了截取字符的了。

截取的是第一个字符。 因为phpyun全局会对'转义变成\' (单引号会被实体化)

截取第一个字符的话 就是一个\了。



p1.jpg





成功引入了转义符。 如果有两个参数可控的话可以 '\',uesr()#' 类似这样的注入

可是这里只有一个参数 所以能引入转义符的话 也无法注入 只能破坏下语句。



_________________________________________________________________________



0x02 任意文件删除 删lock 可致Getshell



首先来看他这里的判断

code 区域
$dir=$_POST[str][0];

$isuser = $this->obj->DB_select_once("company_show","`picurl`='$dir'");
if($isuser['uid']==$this->uid)
{
echo @unlink(".".$dir);
}else{
echo 0;die;
}
}



这个判断的意思大概是 $isuser['uid']==$this->uid 这个发布的人必须是你



然后才能进行删除操作。



但是在这里 如果DB_select_once("company_show","`picurl`='$dir'");这个查询出来的是空 然后$this->uid也是空的话 那么就通过了这个判断。



code 区域
if(!$this->uid && !$this->username && $_COOKIE["usertype"]!=2){
echo 0;die;





在这里 由于用的是&& 所以只有不满足这三个才会退出



在这里我们不登录会员 然后前面那两个都为true了。



但是$_COOKIE["usertype"]!=2 如果这个为false的话 就不会执行die了。



而且COOKIE刚好也是用户可控的。



来测试一下。



p2.jpg





p3.jpg





可以看到COOKIE usertype为2的时候就不会退出了。



这时候由于我们并没有登录 所以$this->uid 为空(0)



如果这时候 $isuser = $this->obj->DB_select_once("company_show","`picurl`='$dir'");



$dir 并不存在于这个表中的话(我们要删除的文件自然是不会在这个表中的)



那么$isuser['uid'] 也为空。(NULL)



code 区域
if($isuser['uid']==$this->uid)
{
echo @unlink(".".$dir);



这时候就通过了这个判断 可以执行unlink了。

然后$dir也可控。



那不就可以删除任意文件了?



这里我们来删除data/phpyun.lock 达到重装



因为他这之前unlink(".".$dir) 定义了一个. 所以直接加个/就行了

删除的是根目录的构造一下目录。

p4.jpg





返回了1 成功删除了。



这里删除了lock就可以进行重装了。



p5.jpg





这里不会被转义。



p6.jpg





访问首页就成功执行代码了。



_________________________________________________________________________



0x03 如果不想重装别人系统 但是要注入呢?



在member/model/com.class.php中



code 区域
function product_action()
{
$this->public_action();
$delid=$_GET['delid'];

if($delid){
if(is_array($delid)){
$ids=$this->pylode(',',$delid);
$layer_type=1;
}else{
$ids=$delid;
$layer_type=0;
}
$row=$this->obj->DB_select_all("company_product","`id` in (".$ids.") and `uid`='".$this->uid."'","`pic`");





$delid=$_GET['delid']; 如果不是数组的话就没过滤 直接带入到了查询当中。



而且没单引号



这里直接删除data/db.safety.php 和 include\webscan360\360safe\360webscan.php



就能注入了。





p7.jpg



p8.jpg





两个都是返回的1 说明成功删除了、



就能来注入了。



p9.jpg





ok 因为删除了拦截文件 所以无拦截。















漏洞证明:

见上面吧。 好累。

修复方案:

这么晚了 真心求个高分。



修改一下逻辑。



把&&改成|| 咋样? 只是个建议 没多思考。 还是你们自己想想。



版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-07-24 15:08

厂商回复:

感谢您的提供!我们会及时修复!

最新状态:

暂无


漏洞评价:

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

漏洞评价(少于3人评价):
登陆后才能进行评分
100%
0%
0%
0%
0%

评价

  1. 2014-07-23 10:38 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    1

    应该是逻辑错误。

  2. 2014-07-23 10:52 | 郭斯特 ( 普通白帽子 | Rank:181 漏洞数:69 | GhostWin)
    1

    一级棒~ 高三狗,潜心一年,明年再见

  3. 2014-07-23 11:12 | Ray ( 实习白帽子 | Rank:75 漏洞数:7 )
    0

    多产啊。

  4. 2014-07-23 18:47 | 9k九块钱 ( 路人 | Rank:8 漏洞数:11 | ส็็็็็็็็็็็็็็็็็็็...)
    1

    @′ 雨。 求带!!!

  5. 2014-07-28 09:02 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2299 漏洞数:351 | 呵呵!)
    1

    delupload?

  6. 2014-10-21 12:10 | 1c3z ( 普通白帽子 | Rank:297 漏洞数:63 | @)!^)
    0

    叼叼叼。。。

  7. 2014-10-21 13:25 | 0c0c0f ( 实习白帽子 | Rank:50 漏洞数:16 | My H34rt c4n 3xploit 4ny h0les!)
    0

    叼叼叼。。。

  8. 2014-10-21 19:21 | 廷廷 ( 路人 | Rank:0 漏洞数:1 | 有很强的好奇心,爱好广泛,求女女带走。。...)
    0

  9. 2014-10-25 10:55 | 海绵宝宝 ( 普通白帽子 | Rank:369 漏洞数:86 | 唯有梦想与好姑娘不可辜负.)
    0

    66666666

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