
短视頻,自新闻媒体,达人种草1站服务
近段時间发现许多APP程序流程用的是thinkcmf,此程序流程源代码存在getshell系统漏洞,大家Sine安全性应急对此高危系统漏洞开展了剖析和系统漏洞修补,进攻者能够根据结构特殊的恳求包get恳求便可在远程控制服务器上实行随意脚本制作编码。
依据index.php中的配备,新项目相对路径为application,开启 Portal 下的 Controller 文件目录,挑选1个操纵类文档。
发现他的父类为Common\Controller\HomebaseController。
在HomeBaseController中添加以下检测编码
ThinkPHP是1套根据MVC的运用程序流程架构,被分为3个关键构件:实体模型(M)、主视图(V)、操纵器(C)。
因为加上的编码在操纵器中,依据ThinkPHP架构承诺能够根据a主要参数来特定对应的涵数名,可是该涵数的装饰符务必为Public, 而加上的编码恰好合乎该标准。
能够根据以下URL开展浏览,而且能够加上GET主要参数arg1传送给涵数。
cmfx-master/?a=test_public arg1=run%20suess
HomeBaseController类中有1些浏览管理权限为public的涵数,关键关心display涵数.看叙述便是能够自定载入模板,根据$this- parseTemplate 涵数依据承诺明确模板相对路径,假如不符本来的承诺可能从当今文件目录刚开始配对。
随后启用THinkphp Controller 涵数的display方式
/**
* 载入模版和网页页面輸出 能够回到輸出內容
* @aess public
* @param string $templateFile 模版文档名
* @param string $charset 模版輸出标识符集
* @param string $contentType 輸出种类
* @param string $content 模版輸出內容
* @return mixed
*/
public function display($templateFile = '', $charset = '', $contentType = '', $content = '', $prefix = '') {
parent::display($this- parseTemplate($templateFile), $charset, $contentType,$content,$prefix);
}
再往下便是启用Think View的fetch方式,这里的TMPL_ENGINE_TYPE 为Think, 最后模板內容分析在ParseTemplateBehavior中进行
以下启用便可载入随意文档
127.0.0.1:81/cmfx-master/?a=display templateFile=README.md
5、实行系统漏洞
网站系统漏洞修补提议
根据此次财务审计编码发现难题的关键是对display 和 fetch 涵数的装饰符模版涵数开展改动,假如对程序流程编码不熟习的话提议联络技术专业的网站安全性企业来修补系统漏洞,中国做的较为技术专业的如Sinesafe,绿盟,正源星空,这些,对此许多app启用此程序流程的api插口源代码,提议大伙儿遇到此难题最先要开展全面的网站系统漏洞检验和渗入检测,来做到事前防止此类进攻带来的伤害。