互联网技术 · 2024年1月27日

ThinkCMF最新网站漏洞修复建议

近段时间发现很多 APP 使用 ThinkCMF,该源码存在 getshell 漏洞,Sine 安全对该高危漏洞进行分析和修复,攻击者可通过构造特定请求包向远程服务器执行任意脚本。

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

图片链接:https://a5img.pncdn.cn/2019/1120/1574217612162.png

发现其父类为 CommonController、HomeBaseController。

在 HomeBaseController 中加入测试代码。

图片链接:https://tianxun.xyz/Images/easyvpn24/BEAJbgAIgH.jpg

ThinkPHP 是基于 MVC 的应用框架,核心部件为模型(M)、视图(V)、控制器(C)。

代码添加在控制器中,通过 a 参数指定要执行的函数名;该函数修饰符应为 public,符合条件。

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

链接:cmfx-master/?a=test_public&arg1=run%20success

HomeBaseController 中有若干 public 函数,重点关注 display。其描述为可自定义加载模版,通过 parseTemplate 确定模版路径,若不符合原先的约定则从当前目录开始匹配。

随后调用 ThinkPHP 控制器的 display 方法。

该过程加载模板并输出页面,可能返回输出内容。

接着调用 Think View 的 fetch,TMPL_ENGINE_TYPE 为 Think,模板内容在 ParseTemplateBehavior 中解析。

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

链接:http://127.0.0.1:81/cmfx-master/?a=display&templateFile=README.md

五、执行漏洞

图片链接:https://a5img.pncdn.cn/2019/1120/1574217612239.png

网站漏洞修复建议:通过审计发现,重点在于对 display 和 fetch 的修饰符模板函数进行修改。对程序代码不熟悉时,建议联系专业的安全公司,如 Sinesafe、绿盟、启明星辰等。很多 App 调用该程序的 API 接口源码,遇到此问题应进行全面的网站漏洞检测和渗透测试,以防范此类攻击。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册