0x01 前言
昨天看到phpok可以申请cve就去审计了一下,存在漏洞的地方还是挺多的,时间不多找了个简单的任意文件上传漏洞。
0x02 环境
- 程序下载:https://www.lanzous.com/i1ksjkd
- 集成环境是PHPstudy,PHP5.6。
- 安装程序
4. 先创建一个数据库phpok 5. 设置管理员账号密码 6. 安装成功
0x03 漏洞挖掘过程
-
打开打开FolderChangesView记录程序的文件变动。
-
登录后台 程序升级->压缩包升级
-
编辑一个测试文件phpinfo.php,压缩为phpinfo.zip上传。
-
点击上传,压缩包里面的文件会被压缩到网站根目录
-
访问根目录下新生成的文件
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
- 原文作者: F0rmat
- 原文链接: https://xxe.icu/phpok4.9-background-getshell.html
- 版权声明:本作品采用 署名 - 非商业性使用 4.0 国际 (CC BY-NC 4.0)进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。