0x01 前言

昨天看到phpok可以申请cve就去审计了一下,存在漏洞的地方还是挺多的,时间不多找了个简单的任意文件上传漏洞。

0x02 环境

  1. 程序下载:https://www.lanzous.com/i1ksjkd
  2. 集成环境是PHPstudy,PHP5.6。
  3. 安装程序

4. 先创建一个数据库phpok 5. 设置管理员账号密码 6. 安装成功

0x03 漏洞挖掘过程

  1. 打开打开FolderChangesView记录程序的文件变动。

  2. 登录后台 程序升级->压缩包升级

  3. 编辑一个测试文件phpinfo.php,压缩为phpinfo.zip上传。

  4. 点击上传,压缩包里面的文件会被压缩到网站根目录

  5. 访问根目录下新生成的文件

0x04 漏洞分析

漏洞代码出现在framework/admin/update_control.php文件的unzip_f函数,可以看到用到lib里面的phpzip类,有兴趣可以去读下源码framework/libs/phpzip.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

0x05 结束

这个程序也不难,可以大概浏览下后台有什么功能再去测试,如果还是没能发现什么,就从入口文件一步步去分析。

0x06 参考

程序下载:https://www.lanzous.com/i1ksjkd