# 0x01 前言
昨天看到phpok可以申请cve就去审计了一下，存在漏洞的地方还是挺多的，时间不多找了个简单的任意文件上传漏洞。
# 0x02 环境
1. 程序下载：https://www.lanzous.com/i1ksjkd
2. 集成环境是PHPstudy,PHP5.6。
3. 安装程序
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-1.png)
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-2.png)
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-3.png)
4. 先创建一个数据库phpok
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-4.png)
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-5.png)
5. 设置管理员账号密码
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-6.png)
6. 安装成功
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-7.png)



# 0x03 漏洞挖掘过程
1. 打开打开FolderChangesView记录程序的文件变动。
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-8.png)

2. 登录后台
程序升级->压缩包升级
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-9.png)

3. 编辑一个测试文件phpinfo.php,压缩为phpinfo.zip上传。
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/11.png)
4. 点击上传，压缩包里面的文件会被压缩到网站根目录
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-11.png)
5. 访问根目录下新生成的文件
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/12.png)

# 0x04 漏洞分析
漏洞代码出现在`framework/admin/update_control.php`文件的`unzip_f`函数,可以看到用到`lib`里面的`phpzip`类，有兴趣可以去读下源码`framework/libs/phpzip.php`
大家可能疑问你怎么知道漏洞文件是这个，可以抓包来查看整过利用的过程，然后再去源码分析。
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-12.png)
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-13.png)


```php
	public function unzip_f()
	{
		$zipfile = $this->get('zipfile');
		if(!$zipfile){
			$this->error(P_Lang('未指定附件文件'));
		}
		if(strpos($zipfile,'..') !== false){
			$this->error(P_Lang('不支持带..上级路径'));
		}
		if(!file_exists($this->dir_root.$zipfile)){
			$this->error(P_Lang('ZIP文件不存在'));
		}
		$this->lib('phpzip')->unzip($this->dir_root.$zipfile,'data/update/');
		$info = $this->update_load();
		if(!$info || (is_array($info) && $info['status'] == 'error')){
			$this->error($info['content']);
		}
		$this->success();
	}
```
可以看到用到lib里面的phpzip类，有兴趣可以去读下源码framework/libs/phpzip.php
![](https://pic-1252849007.cos.ap-guangzhou.myqcloud.com/phpok/1-14.png)


# 0x05 结束
这个程序也不难，可以大概浏览下后台有什么功能再去测试，如果还是没能发现什么，就从入口文件一步步去分析。
# 0x06 参考
程序下载：https://www.lanzous.com/i1ksjkd