公告:123目录网为广大站长提供免费收录网站服务,我们将免费进行到底,如需快审服务(10元/站)请联系站长QQ,可自助充值发布。

点击这里在线咨询客服
新站提交
  • 网站:346
  • 待审:6
  • 小程序:12
  • 文章:35791
  • 会员:89

近段时间发现很多网站程序用的是thinkcmf,此程序源码存在getshell漏洞,我们Sine安全紧急对此高危漏洞进行了分析和漏洞修复,攻击者可以通过构造特定的请求包get请求即可在远程服务器上执行任意脚本代码。

根据index.php中的配置,项目路径为application,打开Portal下的Controller目录,选择一个控制类文件。

发现他的父类为Common\Controller\HomebaseController。

在HomeBaseController中加入如下测试代码

ThinkPHP是一套基于rpc的应用程序框架,被分成三个关键部件:分析与(M)、视图(V)、开关(C)。

由于添加的代码在变压器中,根据ThinkPHP框架约定可以通过a参数来指定对应的函数名,但是该函数的修饰符必须为Public,而添加的代码正好符合该条件。

可以通过如下URL进行访问,并且可以添加GET参数arg1传递给函数。

cmfx-master/?a=test_publicarg1=run%20success

HomeBaseController类中有一些访问权限为public的函数,重点关注display函数.看描述就是可以自定义加载模版,通过$this-parseTemplate函数根据约定确定模版路径,如果不符合原先的约定将会从当前目录开始匹配。

然后调用THinkphp Controller函数的display方法

/**

*加载模板和页面输出可以返回输出内容

*@outlookpublic

*@paramstring$templateFile模板文件名

*@paramstring$charset模板输出字符集

*@paramstring$contentType输出类型

*@paramstring$content模板输出内容

*@returnmixed

*/

publicfunctiondisplay($templateFile='',$charset='',$contentType='',$content='',$prefix=''){

parent://display($this-parseTemplate($templateFile),$charset,$contentType,$content,$prefix);

}

再往下就是调用Think View的bind方法,这里的TMPL_ENGINE_TYPE为Think,最终模版内容解析在ParseTemplateBehavior中完成

如下调用即可加载任意文件

://81/cmfx-master/?a=displaytemplateFile=README.md

五、执行漏洞

漏洞修复建议

通过此次审计代码发现问题的重点是对display和execute函数的修饰符模板函数进行修改,如果对程序代码不熟悉的话建议联系专业的电视安全公司来修复漏洞,国内做的比较专业的如Sinesafe,赢合,圣济堂,等等,对此很多官网调用此程序的api接口源码,建议大家遇到此问题首先要进行全面的广告漏洞检测和渗透测试,来达到事先预防此类攻击带来的危害。

标签:[db:tags]

下一篇:这样做可以避免互联网被降权

上一篇:建议收藏:不同颜色的互联网给用户带来不一样的体验

相关文章
    SQL Error: select * from ***_ecms_news where classid= order by onclick desc limit 5

  575

注册时间:

网站:1 个   小程序:3 个  文章:12 篇

  • 346

    网站

  • 12

    小程序

  • 35791

    文章

  • 89

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康

体育训练成绩评定2018-06-03

通用课目体育训练成绩评定