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

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

缺陷编号:wooyun-2014-058572

漏洞标题:PHPDisk E-Core 补丁过滤不严继续重装

相关厂商:phpdisk.com

漏洞作者: ′雨。

提交时间:2014-04-28 11:47

修复时间:2014-07-24 11:48

公开时间:2014-07-24 11:48

漏洞类型:任意文件遍历/下载

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-28: 细节已通知厂商并且等待厂商处理中
2014-05-03: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-06-27: 细节向核心白帽子及相关领域专家公开
2014-07-07: 细节向普通白帽子公开
2014-07-17: 细节向实习白帽子公开
2014-07-24: 细节向公众公开

简要描述:

过滤不严。

详细说明:

WooYun: PHPDisk E-Core 漏洞 可注入 可重装 鸡肋可getshell
上个地址。
今天看到发布补丁了 去下载来看看。
在phpdisk_del_process.php中

parse_str(pd_encode($str,'DECODE'));
$pp = iconv('utf-8','gbk',$pp);
$arr = explode('.',$pp);
$file_id = (int)$file_id;
$file_name = $db->escape($file_name);
$src_file = $arr[0].get_real_ext($arr[1]);


这里官方的修复方式是

$file_id = (int)$file_id;
$file_name = $db->escape($file_name);


对一个转整 对一个转义。 这样解决了注入。 但是却没有解决重装。
$pp = iconv('utf-8','gbk',$pp);
$arr = explode('.',$pp);
这里切割 第一个用来做文件名 第二个用来做后缀。
这函数get_real_ext对后缀有一些过滤 如果检测到含其中的后缀就重新定义为txt
但是里面没有lock 所以我们可以用来删除lock。

$rs = $db->fetch_one_array("select file_real_name,file_extension,file_store_path from {$tpf}files where file_id='$file_id' limit 1");
if($rs){
$num = @$db->result_first("select count(*) from {$tpf}files where file_real_name='{$rs[file_real_name]}' and file_extension='{$rs[file_extension]}' and file_name='{$file_name}' and file_store_path='{$rs[file_store_path]}'");
}
if($safe){
if($num==1){

if(@unlink(PHPDISK_ROOT.$src_file)){


由于注入被修复了 不能向之前那样直接通过注入来让$num为1了
这里只需要系统上存在一个文件就好。不管是谁传的。

c1.jpg


成功删除。

漏洞证明:

p2.jpg


成功重装。

修复方案:

加强过滤。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-07-24 11:48

厂商回复:

最新状态:

暂无