【技术分析】Typecho对象注入漏洞分析

百家 作者:绿盟科技 2017-10-27 13:00:26

综述

2017年10月24日,Typecho被爆出install.php文件存在后门可以直接执行任意代码导致使用此系统的网站直接被getshell。

攻击难度:低。

危害程度:高。

官方修复情况如下:

https://github.com/typecho/typecho/commit/e277141c974cd740702c5ce73f7e9f382c18d84e

什么是Typecho?

Typecho 是一款博客程序,它在 GPL version 2 许可证下发行,基于 PHP (需要 PHP5 以上版本)构建,可以运行在各种平台上,支持多种数据库(Mysql, PostgreSQL, SQLite),在国内使用较广。

影响的版本

GitHub上2017年10月24日之前的所以版本。

技术分析

此漏洞的根源在于系统的安装文件install.php,因为在系统安装完之后是不会自动删除install.php文件的。

在install.php文件中,当设置了正确的referer(网站url即可),并且finish=1,然后就会执行下面这样一段代码:

在这里系统从cookie中获取了键为__typecho_config的内容,然后base64解密并且使用不安全的unserialize函数反序列化,那么我们很容易想到:如果在cookie中的__typecho_config中构造特定的数据是不是就可以执行任意PHP代码了?


下面我们就要分析系统代码,寻找并构造可以被执行的特定代码。


注意上面的代码,可以看到被反序列化后的内容$config[‘adapter’]作为构造参数进入了Typecho_Db实例中,继续跟进Db.php文件中Typecho_Db类的构造函数:

这里的$adapterName就是$config[‘adapter’],然后$adapterName进行了一个字符串拼接操作继续赋值给$adapterName。


到这里如果有经验的大佬或者脑回路够大的话会想到,如果$adapterName是一个实例对象的话,那么这里进行字符串操作就会自动调用当前实例的__toString()魔术方法,当然这也有要对对象注入有一定的了解。


不过你不了解对象注入、没有太多经验、脑回路也不够大的话那么我们审计到这里就先打一个问号,保存疑点,然后继续。

……


我们共可以发现三个疑点,将其结合起来:

第一个疑点中的可控变量$adapterName进行字符串操作时,我们将$adapterName赋值为文件Feed.php中的Typecho_Feed类实例的话,这里就会调用Typecho_Feed类的__toString魔术方法;

第二个疑点中我们把属性$this->_params和$this->_filter被设置为恶意的内容的Typecho_Request类实例赋值给第三个疑点中的$item[‘author’],当访问$item[‘author’]的属性screenName的时候就会执行到Request.php中的call_user_func危险函数,触发恶意代码的执行。

具体过程伪代码如下:

最后将构造好的内容序列化在base64编码赋值给cookie就好了。

防护方案

请升级到官方的最新版即可。

参考链接

https://github.com/typecho/typecho/issues/619 


完整内容请点击阅读原文



声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。


由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。


绿盟科技拥有对此安全公告的修改和解释权。


如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。


关于绿盟科技


北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。


基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。


北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369




请点击屏幕右上方“…”

关注绿盟科技公众号
NSFOCUS-weixin

↑↑↑长按二维码,下载绿盟云APP

点击下方“阅读原文”查看更多
↓↓↓ 

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接