doyo建站程序平行权限问题2处

小伙伴和我看了下doyoCMS的逻辑,交wooyun小伙伴们看看是不是个漏洞

首先出现问题的地方是这段代码

代码位置:/source/member.php

function mydel(){//多处逻辑越权操作

$molds=$this->syArgs('molds',1);

$id=$this->syArgs('id');

switch ($molds){

case 'comment':

if(!syDB('comment')->delete(array('cid'=>$id,'user'=>$this->my['user']))){

message("删除失败,请重新提交");

}

break;

case 'message':

if(!syDB('message')->delete(array('id'=>$id,'user'=>$this->my['user']))){

message("删除失败,请重新提交");

}

syDB('message_field')->delete(array('aid'=>$id));

break;

default:

$c=syDB($molds)->find(array('id'=>$id,'user'=>$this->my['user'],'usertype'=>1),null,'id,isshow');

if(!$c||$c['isshow']==1)message("此内容已经审核或不是您发布的内容,不能删除。");

if(!syDB($molds)->delete(array('id'=>$id,'user'=>$this->my['user'],'usertype'=>1))){

message("删除失败,请重新提交");

}

syDB($molds.'_field')->delete(array('aid'=>$id));

break;

}

$w=array('aid'=>$id,'molds'=>$molds);

foreach(syDB('member_file')->findAll($w,null,'url') as $v){@unlink($v['url']);}

syDB('member_file')->delete($w);

message("删除成功");

}

这么看不方便,我上一张图:
 

doyo建站程序平行权限问题2处 – 网站安全 – 自学php网插图

代码从URL获得了$molds $id两个变量

然后进入判断,问题在设计逻辑上,假如$molds被赋值为comment

进入308行case,后面无论id等于多少语句不会出错,所以就会执行成功,然后跳出,进入328行,这时候molds固定,而id是可控的,所以数据库member_file中的数据就会被人为控制删掉,并且数据库链接中的实际图片文件也会别unlink掉

验证一下:

首先注册用户,登陆之

查看数据库
 

doyo建站程序平行权限问题2处 – 网站安全 – 自学php网插图1

删除aid=11的图片
 

doyo建站程序平行权限问题2处 – 网站安全 – 自学php网插图2

结果
 

doyo建站程序平行权限问题2处 – 网站安全 – 自学php网插图3

验证了我的猜想

说他越权原因在于,这个数据库存放的资源uid是隶属于不同人的,也就是说在删除的时候没有考虑uid,这里uid很明显0,也就是管理员的uid,里面的图片也是管理员放的产品图片,所以可以认为是越权操作,利用其可以删除别人的图片资源,导致网站丢图。

同理,这个地方还有另一处越权操作

访问如图链接:
 

doyo建站程序平行权限问题2处 – 网站安全 – 自学php网插图4

删除message的同时,可以随意删掉别人的应聘请求(这个地方是字段属于应聘请求数据)
 

doyo建站程序平行权限问题2处 – 网站安全 – 自学php网插图5

如果说上一处还存在争议,这一处绝对没有问题。实测可用。

解决方案:

增加数据库造作中uid的识别

    上一篇: TCL么么哒商城设计缺陷可遍历用户信息 - 网站安全 - 自学php网

    下一篇: WIFI万能钥匙密码查询接口算法破解(可无限查询用户AP明文密码) - 网站安全 - 自学php网
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《doyo建站程序平行权限问题2处 – 网站安全 – 自学php网
   

还没有人抢沙发呢~