### 简要描述: 过滤不严。 ### 详细说明: [WooYun: PHPDisk E-Core 漏洞 可注入 可重装 鸡肋可getshell](http://www.wooyun.org/bugs/wooyun-2014-057665) 上个地址。 今天看到发布补丁了 去下载来看看。 在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...
### 简要描述: 过滤不严。 ### 详细说明: [WooYun: PHPDisk E-Core 漏洞 可注入 可重装 鸡肋可getshell](http://www.wooyun.org/bugs/wooyun-2014-057665) 上个地址。 今天看到发布补丁了 去下载来看看。 在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了 这里只需要系统上存在一个文件就好。不管是谁传的。 [<img src="https://images.seebug.org/upload/201404/261740490e6a002cf110e2203adcf4a32014c571.jpg" alt="c1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/261740490e6a002cf110e2203adcf4a32014c571.jpg) 成功删除。 ### 漏洞证明: [<img src="https://images.seebug.org/upload/201404/261742154118bc0ff3566815d22e0bab44373192.jpg" alt="p2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/261742154118bc0ff3566815d22e0bab44373192.jpg) 成功重装。