### 简要描述:
过滤不严。
### 详细说明:
[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)
成功重装。
暂无评论