F0rmat

phpok4.9后台getshell(每周一洞)

2018-08-06

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
大家可能疑问你怎么知道漏洞文件是这个,可以抓包来查看整过利用的过程,然后再去源码分析。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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