Typecho惨遭背叛,后门直接上门。

摘要

Typecho惨遭攻击!安装文件竟然有后门,黑客轻松getshell!危害极大!官方已修复,赶紧更新!

正文

【摘要】2017年10月24日,Typecho被爆出install.php文件存在后门可以直接执行任意代码导致使用此系统的网站直接被getshell。攻击难度:低。危害程度:高。官方修复情况如下:https://GitHub.com/ty… 2017年10月24日,Typecho被爆出install.php文件存在后门可以直接执行任意代码导致使用此系统的网站直接被getshell。攻击难度:低。危害程度:高。官方修复情况如下:

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

此漏洞的根源在于系统的安装文件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危险函数,触发恶意代码的执行。

防护方案:请升级到官方的最新版即可。参考链接:https://github.com/typecho/typecho/issues/619

关注不迷路

扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!

温馨提示:如果您访问和下载本站资源,表示您已同意只将下载文件用于研究、学习而非其他用途。
文章版权声明 1、本网站名称:宇凡盒子
2、本站文章未经许可,禁止转载!
3、如果文章内容介绍中无特别注明,本网站压缩包解压需要密码统一是:yufanbox.com
4、本站仅供资源信息交流学习,不保证资源的可用及完整性,不提供安装使用及技术服务。点此了解
5、如果您发现本站分享的资源侵犯了您的权益,请及时通知我们,我们会在接到通知后及时处理!提交入口
0

评论0

请先

站点公告

🚀 【宇凡盒子】全网资源库转储中心

👉 注册即送VIP权限👈

👻 全站资源免费下载✅,欢迎注册!

记得 【收藏】+【关注】 谢谢!~~~

立即注册
没有账号?注册  忘记密码?

社交账号快速登录